게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
라즈베리파이 버튼 스위치 질문 2
게시물ID : programmer_16892짧은주소 복사하기
작성자 : 순잼
추천 : 0
조회수 : 930회
댓글수 : 5개
등록시간 : 2016/04/24 13:43:54
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)

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