-
Notifications
You must be signed in to change notification settings - Fork 0
/
booth_init.py
98 lines (82 loc) · 3.28 KB
/
booth_init.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
"""
This example assumes you have connected your Raspberry Pi 4 according to the diagram in the readme
"""
import board
import time
from photobooth import RPi
booth = RPi()
print("starting webserver")
booth.start_web() # stored in booth.web_server
# Wait until webserver is started
while not booth.check_web():
time.sleep(0.05)
print("Webserver started")
print("starting kiosk")
booth.start_kiosk() # Stored in booth.kiosk
print("setting up components and running checks")
booth.reset_last_shot()
# Setup panel and run a panel test as a thread (so we don't have to wait for it to finish)
panel = booth.add_neopixel(name="main", control=board.D18)
panel_test = booth.run_as_thread(panel.panel_test, executions=1, start=True)
# Check network
if booth.net_check_local():
booth.toggle_led(label="net_local", on=True)
if booth.net_check_www():
booth.toggle_led(label="net_www", on=True)
# Setup Camera and toggle LED
camera = booth.add_camera(name="main", model="Canon EOS 1100D")
booth.toggle_led(label="camera_rdy", on=True)
# Setup Printer and toggle LED
printer = booth.add_printer(name="receipt", model="PBM-8350U")
booth.toggle_led(label="print_rdy", on=True)
# Wait for panel test to finish
while panel_test.is_alive():
time.sleep(0.05)
print("Booth is online and ready")
# Booth is ready
booth.toggle_led(label="shutter_rdy", on=True)
attract = booth.run_as_thread(panel.scroll, start=True, speed=0.01,
text="Press the capture button to begin! ",)
# Run Booth
while True:
time.sleep(0.05) # if you dont have a short sleep, your CPU will catch fire. /s
if booth.check_sw_input("capture"):
print("Capture button was pressed")
attract.stop_immediately()
panel.scroll(text="3...")
panel.scroll(text="2...")
panel.scroll(text="1...")
panel.flash(text="Smile! :D")
capture = booth.run_as_thread(target=camera.capture, executions=1, start=True)
wait = booth.run_as_thread(target=panel.twinkle, start=True, count=20)
while capture.is_alive():
time.sleep(0.01)
wait.stop_immediately()
panel.scroll(text="AWESOME!")
booth.copy_to_last_shot(camera.last_shot())
attract.restart()
booth.display_last_shot()
elif booth.check_sw_input("print"):
print("Print button was pressed")
now = time.time()
# Check if we had a recent print
try:
delta = int(now - last_print) # noqa: F821
except Exception:
# There probably wasn't a last_print, so go ahead
pass
else:
# Only print if we haven't in the last 3 seconds (successive pushes)
if delta <= 3:
continue # don't print
booth.run_as_thread(panel.flash, text="Printing...", executions=1, start=True)
while not camera.is_ready():
time.sleep(0.01) # wait for camera to be ready after the shot.
printer.text(text=camera.last_shot())
printer.ln()
printer.qr(content="https://website.com", size=10) # Could be where the photo was uploaded
printer.ln()
printer.text(text="Thank you for using our photobooth! "
"Please visit us at http://website.net")
printer.cut()
last_print = time.time()