-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #32 from FoamyGuy/custom_filenames
allow custom filenaming
- Loading branch information
Showing
2 changed files
with
91 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
# SPDX-FileCopyrightText: Copyright (c) 2024 Tim Cocks for Adafruit Industries | ||
# | ||
# SPDX-License-Identifier: MIT | ||
""" simple point-and-shoot camera example. With NTP and internal RTC to | ||
add timestamp to photo filenames. Must install adafruit_ntp library! | ||
Example code assumes WIFI credentials are properly setup and web workflow | ||
enabled in settings.toml. If not, you'll need to add code to manually connect | ||
to your network.""" | ||
|
||
import time | ||
import wifi | ||
import socketpool | ||
import rtc | ||
import adafruit_ntp | ||
import adafruit_pycamera # pylint: disable=import-error | ||
|
||
pool = socketpool.SocketPool(wifi.radio) | ||
ntp = adafruit_ntp.NTP(pool, tz_offset=0) | ||
rtc.RTC().datetime = ntp.datetime | ||
|
||
pycam = adafruit_pycamera.PyCamera() | ||
pycam.mode = 0 # only mode 0 (JPEG) will work in this example | ||
|
||
# User settings - try changing these: | ||
pycam.resolution = 2 # 0-12 preset resolutions: | ||
# 0: 240x240, 1: 320x240, 2: 640x480, 3: 800x600, 4: 1024x768, | ||
# 5: 1280x720, 6: 1280x1024, 7: 1600x1200, 8: 1920x1080, 9: 2048x1536, | ||
# 10: 2560x1440, 11: 2560x1600, 12: 2560x1920 | ||
pycam.led_level = 1 # 0-4 preset brightness levels | ||
pycam.led_color = 0 # 0-7 preset colors: 0: white, 1: green, 2: yellow, 3: red, | ||
# 4: pink, 5: blue, 6: teal, 7: rainbow | ||
pycam.effect = 0 # 0-7 preset FX: 0: normal, 1: invert, 2: b&w, 3: red, | ||
# 4: green, 5: blue, 6: sepia, 7: solarize | ||
|
||
print("Simple camera ready.") | ||
pycam.tone(800, 0.1) | ||
pycam.tone(1200, 0.05) | ||
|
||
while True: | ||
pycam.blit(pycam.continuous_capture()) | ||
pycam.keys_debounce() | ||
|
||
if pycam.shutter.short_count: | ||
print("Shutter released") | ||
pycam.tone(1200, 0.05) | ||
pycam.tone(1600, 0.05) | ||
try: | ||
pycam.display_message("snap", color=0x00DD00) | ||
timestamp = "img_{}-{}-{}_{:02}-{:02}-{:02}_".format( | ||
time.localtime().tm_year, | ||
time.localtime().tm_mon, | ||
time.localtime().tm_mday, | ||
time.localtime().tm_hour, | ||
time.localtime().tm_min, | ||
time.localtime().tm_sec, | ||
) | ||
pycam.capture_jpeg(filename_prefix=timestamp) | ||
pycam.live_preview_mode() | ||
except TypeError as exception: | ||
pycam.display_message("Failed", color=0xFF0000) | ||
time.sleep(0.5) | ||
pycam.live_preview_mode() | ||
except RuntimeError as exception: | ||
pycam.display_message("Error\nNo SD Card", color=0xFF0000) | ||
time.sleep(0.5) | ||
|
||
if pycam.card_detect.fell: | ||
print("SD card removed") | ||
pycam.unmount_sd_card() | ||
pycam.display.refresh() | ||
|
||
if pycam.card_detect.rose: | ||
print("SD card inserted") | ||
pycam.display_message("Mounting\nSD Card", color=0xFFFFFF) | ||
for _ in range(3): | ||
try: | ||
print("Mounting card") | ||
pycam.mount_sd_card() | ||
print("Success!") | ||
break | ||
except OSError as exception: | ||
print("Retrying!", exception) | ||
time.sleep(0.5) | ||
else: | ||
pycam.display_message("SD Card\nFailed!", color=0xFF0000) | ||
time.sleep(0.5) | ||
pycam.display.refresh() |