diff --git a/photobox.py b/photobox.py index 8934585..1650412 100755 --- a/photobox.py +++ b/photobox.py @@ -76,10 +76,16 @@ IMAGES_TODO = os.path.join(IMAGE_DIR, "todo") # global variables +spot_mode = 0 session_start = monotonic_time() -spot_mode = 0 + +# GPIO helpers + +def led_border(state): + global GPIO_LED_BORDER + GPIO.output(GPIO_LED_BORDER, state) def set_spot_mode(new_mode): @@ -94,40 +100,39 @@ def next_spot_mode(): set_spot_mode(spot_mode + 1) -def handle_button(gpio_id): + +# user interface + +def button_press(gpio_id): next_spot_mode() + # INIT GPIO GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) -GPIO.setup(GPIO_RIGHT_SPOT, GPIO.OUT) -GPIO.setup(GPIO_LEFT_SPOT, GPIO.OUT) -GPIO.setup(GPIO_LED_BORDER, GPIO.OUT) - -GPIO.setup(GPIO_BUTTON_LED, GPIO.OUT) -GPIO.output(GPIO_BUTTON_LED, GPIO.LOW) +GPIO.setup(GPIO_RIGHT_SPOT, GPIO.OUT, initial=GPIO.HIGH) +GPIO.setup(GPIO_LEFT_SPOT, GPIO.OUT, initial=GPIO.HIGH) +GPIO.setup(GPIO_LED_BORDER, GPIO.OUT, initial=GPIO.LOW) +GPIO.setup(GPIO_BUTTON_LED, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(GPIO_BUTTON, GPIO.IN) -GPIO.add_event_detect(GPIO_BUTTON, GPIO.FALLING, handle_button, bouncetime=300) +GPIO.add_event_detect(GPIO_BUTTON, GPIO.FALLING, button_press, bouncetime=300) -GPIO.output(GPIO_RIGHT_SPOT, GPIO.HIGH) -GPIO.output(GPIO_LEFT_SPOT, GPIO.HIGH) - -GPIO.output(GPIO_LED_BORDER, GPIO.LOW) +led_border(False) sleep(0.02) -GPIO.output(GPIO_LED_BORDER, GPIO.HIGH) +led_border(True) sleep(0.02) -GPIO.output(GPIO_LED_BORDER, GPIO.LOW) +led_border(False) sleep(0.02) -GPIO.output(GPIO_LED_BORDER, GPIO.HIGH) +led_border(True) sleep(0.02) -GPIO.output(GPIO_LED_BORDER, GPIO.LOW) +led_border(False) sleep(0.02) -GPIO.output(GPIO_LED_BORDER, GPIO.HIGH) +led_border(True) sleep(0.02) -GPIO.output(GPIO_LED_BORDER, GPIO.LOW) +led_border(False) @@ -253,20 +258,18 @@ def makePhotos(): camera.start_preview() # COUNTDOWN - GPIO.output(GPIO_RIGHT_SPOT, GPIO.LOW) - GPIO.output(GPIO_LEFT_SPOT, GPIO.LOW) - GPIO.output(GPIO_LED_BORDER, GPIO.HIGH) + led_border(True) for i in range(0, COUNTDOWN): countdown(camera, pad_cdn[i], img_cdn[i]) - GPIO.output(GPIO_LED_BORDER, GPIO.LOW) + led_border(False) # SHOTS for i in range(0, SHOT_COUNT): # SHOT! sleep(PIC_INTERVAL) - GPIO.output(GPIO_LED_BORDER, GPIO.HIGH) + led_border(True) camera.capture("./tmp%s.jpg" % i, format='jpeg', quality=100, thumbnail=None) - GPIO.output(GPIO_LED_BORDER, GPIO.LOW) + led_border(False) # PAUSE if i < SHOT_COUNT - 1: @@ -277,9 +280,6 @@ def makePhotos(): # CLOSE CAMERA camera.close() - - GPIO.output(GPIO_RIGHT_SPOT, GPIO.HIGH) - GPIO.output(GPIO_LEFT_SPOT, GPIO.HIGH) @@ -420,7 +420,5 @@ except KeyboardInterrupt: print("") finally: - GPIO.output(GPIO_RIGHT_SPOT, GPIO.HIGH) - GPIO.output(GPIO_LEFT_SPOT, GPIO.HIGH) - GPIO.output(GPIO_LED_BORDER, GPIO.LOW) + led_border(False) pygame.quit()