私は、ボタンを押したときにLCDディスプレイに情報が表示されるように、Pythonでいくつかのコードを書いています。これは私のコードの一部です:Pythonでメインスレッドを一時停止する
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def action1(self):
temp = "15"
lcd.clear()
lcd.message(" Temp. Est.: \n" + " " + temp + " " + chr(223) + "C")
time.sleep(5.0)
lcd.clear
GPIO.add_event_detect(18, GPIO.RISING,callback=action1, bouncetime=800)
while True:
date = datetime.now().strftime('%m-%d-%Y %H:%M')
lcd.message(date)
time.sleep(5.0)
lcd.clear()
このコードが動作しているが、私はボタンを押したときに、それは(それは私がボタンを押したときに依存して)再び、私に時間と温度を温度を示しています。私は "GPIO.add_event_detect"コールバック関数の2番目のスレッドを実行し、メインスレッドを一時停止しないことを読んだ。私は、ボタンを押した後、ボタンを押すたびにLCD上にとどまり、私の場合は時間の経過とともにコードが下から始まることを望みます。 どうすればいいですか?ありがとうございました!
ボタンを押す時間をキャプチャし、あとでボタンが押されすぎるのを無視することで、自分自身でデバウンスすることができます。この質問への回答http://raspberrypi.stackexchange.com/questions/8544/gpio-interrupt-debounceが役に立ちます。 –
表示される値はどのくらい速く切り替わりますか?あなたのボタンはおそらくバウンスしています。あなたはこれを読むことができます:https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/buttons_and_switches/ –
あなたは私が間違っているか、間違ってしまったかもしれませんが、ここでの問題はボタンの繰り返しを繰り返すことではありません。問題は、常に表示したいコードがwhileループにあり、GPIO.add_event_detectで開いた別のスレッドとメインスレッド内のコードが交互に表示されることです。 – antonioag