게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
라즈베리파이 버튼 스위치
게시물ID : programmer_16746짧은주소 복사하기
작성자 : 순잼
추천 : 0
조회수 : 1004회
댓글수 : 1개
등록시간 : 2016/04/17 00:44:07
옵션
  • 본인삭제금지
안녕하세요, 라즈베리 파이 버튼스위치 질문있어서요.

제가 하고 싶은게 
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()

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호