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