http://www.todayhumor.co.kr/board/view.php?table=programmer&no=16746&s_no=16746&kind=search&search_table_name=programmer&page=1&keyfield=subject&keyword=%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC
안녕하세요. 일전에 라즈베리파이 버튼 스위치 관련해서 질문올렸었습니다.
하고자한 버튼은 구현되었는데요.
문제는 버튼을 빨리(?) 눌러야된다는점??
버튼을 순간적으로 눌러야 정상적으로 작동 됩니다. ;;;
time.sleep(0.2)이렇게 하면 그나마 좀 잘 되는듯 한데,,
버튼을 누를때(GPIO.input(btn) == True), state 상태가 0 또는 1를 왔다갔다 해서 문제가 생기는거 같아요.
버튼을 짧게 누르던 길게 누르던 한번만 인식할 수 있도록 하는 방법 없을까요??
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.cleanup()
GPIO.setwarnings(False)
led = 17 #led GPIO pin num
btn = 27 #btn GPIO pin num
state = 0 #btn State
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)
while True:
current = time.time()
if GPIO.input(btn):
if state == 0:
state = 1
start = time.time()
led_on()
else:
state = 0
led_off()
#time.sleep(0.1)
else:
if state == 0:
print("btn relased: ", state)
led_off()
else:
print("btn relased: ", state)
if ((current-start)>5):
state = 0
else:
led_on()
#time.sleep(0.1)