Я строю кнопку-камеру с питоном на Raspberry Pi
перед камерой установлен затвор.
Я пытался построить:
Затвор откроется автоматически, и камера автоматически сделает снимок.
однако, когда я нажал кнопку, фотокамера перестанет снимать, и затвор тоже закроется.
простая иллюстрация, см. Эту фотографию
это мой текущий скрипт на python.
from time import sleep
from picamera import PiCamera
from picamera import PiCamera
import RPi.GPIO as GPIO
import datetime
import time
camera = PiCamera()
sleep(WAIT_TIME)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(15, GPIO.OUT)
p15 = GPIO.PWM(15, 50) #P15 is shutter motor
p15.start(0)
GPIO.setup(3, GPIO.IN) #P3 is button
def take_photo():
for i in range(2):
date = datetime.datetime.now().strftime("%m_%d_%Y_%H_%M_%S")
timeCaptured = '/home/pi/timelapse/TEST_%s.jpg' %date
camera.capture(timeCaptured)
time.sleep(1)
def open_shutter():
print('move')
p15.ChangeDutyCycle(3)
time.sleep(1)
p15.ChangeDutyCycle(0)
time.sleep(0.5)
def close_shutter():
p15.ChangeDutyCycle(6.2)
time.sleep(1)
p15.ChangeDutyCycle(0)
time.sleep(1)
Это работает. Ждем 1 мин. Тем не менее, я должен всегда нажимать кнопку, иначе она всегда будет фотографировать. Как я могу попросить устройство подождать немного, чтобы увидеть, нажата кнопка или нет, и выполнить другое действие?
while True:
try:
GPIO.wait_for_edge(3, GPIO.RISING)
time.sleep(60)
if GPIO.input(3) == GPIO.LOW:
print('Button pressed')
close_shutter()
time.sleep(1)
elif GPIO.input(3) == GPIO.HIGH:
open_shutter()
take_photo()
close_shutter()
time.sleep(1)
exit()
except(KeyboardInterrupt):
print('AN Error was raised in sequence')
close_shutter()
p15.stop()
GPIO.cleanup()