お世話になります。当方初心者のため教えて下さい。
前提・実現したいこと
Raspberry Piで、LED2つ(赤、緑)を交互に点滅させ、タクトスイッチを押したら2つのLEDの点滅を停止するものを作りたいです。試しに作成したプログラムは以下です。
import RPi.GPIO as GPIO from time import sleep import time GPIO.setmode(GPIO.BCM) SW_01 = 5 # SW1 LED_01 = 17 # LED1 LED_02 = 27 # LED2 GPIO.setup(SW_01, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(LED_01, GPIO.OUT) GPIO.setup(LED_02, GPIO.OUT) try: while True: GPIO.output(LED_01, GPIO.HIGH) GPIO.output(LED_02, GPIO.LOW) time.sleep(0.5) GPIO.output(LED_01, GPIO.LOW) GPIO.output(LED_02, GPIO.HIGH) time.sleep(0.5) if GPIO.input(SW_01)==GPIO.HIGH: break sleep(0.01) except KeyboardInterrupt: pass GPIO.cleanup()
発生している問題・エラーメッセージ
while(ループ処理)中に、タクトスイッチを押したらすぐにwhileを抜けてLEDの点滅を停止させたい(下記)のですが、しばらく(1~2秒)押し続けないと消えません。
何故でしょうか?time.sleep(0.5)が2箇所あるためでしょうか?
すぐにbreakさせたい場合どうすればいいですか?ネットで調べる限り割り込み処理といったものが必要そうという程度はわかりましたが、詳細がわかりませんでした。教えて下さい。
if GPIO.input(SW_01)==GPIO.HIGH: break
補足情報(FW/ツールのバージョンなど)
ラズビアンのverはRaspbian GNU/Linux 9 (stretch)です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/13 09:53