●やりたいこと
下記のような仕様を想定して開発しています。
- ボタンを押して一定時間(例として10秒)後にコマンドを実行する。
- 一定時間以内に再度ボタンが押された場合はその時点から一定時間をカウントしなおしてコマンドを実行する。
- ボタンを連打してもコマンドの実行は1度のみ。
●質問内容
下記のコードを書いてみましたが、10秒以内にボタンを2回押すと、コマンドが実行され直後に再度10秒待ってもう一度コマンドを実行している模様。
Raspberry Pi 3 と Python3 の仕様がまだよくわかっていないのですが、上記の仕様を満たすできるだけスマートなコードの書き方をお教えください。
Python
1import RPi.GPIO as GPIO 2import time 3 4GPIO.setmode(GPIO.BCM) 5pin = 19 6 7def callBackTest(channel): 8 print("callback_start") 9 time.sleep(10) 10 print("callback_end") 11 12GPIO.setup(pin, GPIO.IN, GPIO.PUD_UP) 13GPIO.add_event_detect(pin, GPIO.FALLING, callback=callBackTest, bouncetime=300) 14 15try: 16 while(True): 17 time.sleep(1) 18 19except KeyboardInterrupt: 20 print("break") 21 GPIO.cleanup()
●コマンドの実行結果
pi@raspberrypi:~ $ python3 test.py
callback_start
callback_end
callback_start
callback_end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/10 02:01