前提・実現したいこと
Raspberry Piで
メニュー画面と測定画面を表示できるプログラムファイルに、
センサーから反応を受け取るプログラムファイルをモジュールとして使い
測定画面を表示している間は、センサーからの反応を受け取ることが可能で、逆にメニュー画面を表示されている間はセンサーからの反応を受け取らない というプログラムを作成しています
発生している問題・エラーメッセージ
以下のプログラムでは、上で書いたような仕様は実現できるのですが、しかしどういうわけか、2回目に測定画面に来たら、センサーが反応したときのセリフが2回出力、3回目に来たら3回表示、6回目なら6回表示、、と、見た感じセンサーに関するメソッドが多重に呼び出されているのかも・・・
該当のソースコード
画面担当プログラム
python3
1import tkinter as tk 2import ModuleTest as M1 3#メニュー画面 4def menu_gui(): 5 def callMeasur_gui(): 6 print("pressed01") 7 root.destroy() 8 measuring01_gui() 9 10 root=tk.Tk() 11 12 Button001=tk.Button(root,text="Measure",command=callMeasur_gui) 13 Button001.grid(column=0,row=2) 14 15 root.mainloop() 16#測定画面 17def measuring01_gui(): 18 def callMenu_gui(): 19 root.destroy() 20 menu_gui() 21 22 M1.cleanup() 23 24 M1.SetUp() 25 root=tk.Tk() 26 Button004=tk.Button(root,text="Back to Menu",width=15,command=callMenu_gui) 27 Button004.pack(side="left") 28 29 root.mainloop() 30 31menu_gui() 32
センサー担当プログラム
python3
1import RPi.GPIO as GPIO 2 3def SetUp(): 4 GPIO.setmode(GPIO.BCM) 5 GPIO.setup(4, GPIO.IN) 6 GPIO.add_event_detect(4,GPIO.BOTH,callback=Button) 7 8def Button(channel): 9 status=GPIO.input(4) 10 if status==1: 11 print("Button is pressed") 12 13def cleanup(): 14 print("clean up") 15 GPIO.cleanup()
分かりにくく難しいかもしれませんが、手伝ってくださいー!お願いしまっす!
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。