안녕하세요, 라즈베리 파이 버튼스위치 질문있어서요.
제가 하고 싶은게
1. 버튼을 누르면 LED가 켜지고, 버튼을 다시 누르면 LED가 꺼지는것
2. + 만약에 켜져 있는 상태에서 5초가 지나면 LED 꺼지기
3. + 켜져있는 5초 안에 버튼이 다시 눌리면 LED 꺼지기
1번 2번은 정상적으로 작동이 되는데 3번이 잘 안되네요.
아래 코드에 문제가 있는지 한번 봐주세요.
하이라이트 되어있는 부분의 코드가 동일한데, led_off()는 첫번째 if문에서만 동작이 되네요.
버튼을 누르면 print('btn pressed')가 정상적으로 찍히는데 led_off()는 실행되지 않습니다. ㅜㅜ
어떻게 해야 할까요???
import time
try:
import RPi.GPIO as GPIO
except RuntimeError:
print("Error importing RPi.GPIO! This is probably because you need superuser priviliges. You can achieve this by using 'sudo' to run your script")
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
led = 17 #led GPIO pin num
btn = 27 #btn GPIO pin num
GPIO.setup(led, GPIO.OUT) #led
GPIO.setup(btn, GPIO.IN, pull_up_down=GPIO.PUD_UP) #btn
def led_on():
GPIO.output(led, GPIO.HIGH)
def led_off():
GPIO.output(led, GPIO.LOW)
def stopWatch():
start = time.time()
while True:
current = time.time()
#print(GPIO.input(btn))
print('lights on')
if((current - start) > 5):
print('5sec')
led_off()
break
if(GPIO.input(btn)):
print('btn pressed')
led_off()
break
while True:
input_state = GPIO.input(btn)
if input_state == True:
led_on()
stopWatch()
else:
led_off()