パイソン2.7
趣味のプロジェクトとして、いくつかのデジタル入力信号を監視するためにラズベリーパイを使用しています。累積値を表示し、入力信号を追跡するグローバル変数でそれらを更新する大きなディスプレイが必要です。今のところ、ブレッドボードのプッシュ ボタンを使用するつもりなので、ホールディング変数を使用して、カウンターがサイクルごとにインクリメントしないようにしました。これは明らかだと確信しているので、私はPythonに非常に慣れていないので、可能であればシンプルにしてください。1 つの input 、PE_MATTRESSES
別のPE_COMBINED
、およびもう1 つを呼び出しRESET
ています。もちろん、すべてをゼロにします..PE_MATTRESSES
PE_COMBINED
RESET
プロセスを介した私の擬似コードは次のとおりです。
- I/O 変数とグローバル変数を確立する
- GUI を作成する
- while 1
-- I/O を確認
-- グローバル変数
を更新 -- ラベルを更新して表示
-- ループ
私のコードは次のとおりです。
import Tkinter as tk
import tkFont
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)
PE_MATTRESS = GPIO.input(17)
PE_MATTRESS_LATCH = 0
PE_MATTRESS_ACCUMULATOR = 0
PE_COMBINED = GPIO.input(21)
PE_COMBINED_LATCH = 0
PE_COMBINED_ACCUMULATOR = 0
BOXSPRING_ACCUMULATOR = 0
BOXSPRING_ACCUMULATOR = PE_COMBINED_ACCUMULATOR - PE_MATTRESS_ACCUMULATOR
RESET = GPIO.input(22)
class App:
def __init__(self):
root=tk.Tk()
# create a custom font
self.customFont = tkFont.Font(family="Helvetica", size=117)
# create widgets
label1 = tk.Label(root, text="MATTRESSES: %s" % PE_MATTRESS_ACCUMULATOR , font=self.customFont)
label1.pack()
spacer1 = tk.Label(root, text="", font=self.customFont)
spacer1.pack()
Quit = tk.Button(root, text="QUIT", command=quit)
Increment = tk.Button(root, text="Test", command=Inc)
Quit.pack()
Increment.pack()
label2 = tk.Label(root, text="BOXSPRINGS: %s" % BOXSPRING_ACCUMULATOR, font=self.customFont)
label2.pack()
spacer2 = tk.Label(root, text="", font=self.customFont)
spacer2.pack()
label3 = tk.Label(root, text=" COMBINED: %s" % PE_COMBINED_ACCUMULATOR, font=self.customFont)
label3.pack()
root.geometry('1800x1000+0+0')
root.after(10,Inputs)
root.mainloop()
def Inc():
PE_MATTRESS_ACCUMULATOR = PE_MATTRESS_ACCUMULATOR + 1
label1.setText("MATTRESSES: %s" % PE_MATTRESS_ACCUMULATOR)
label2.setText("BOXSPRINGS: %s" % BOXSPRING_ACCUMULATOR)
label3.setText(" COMBINED: %s" % PE_COMBINED_ACCUMULATOR)
root.update_idletasks()
def Inputs():
if PE_MATTRESS == True and PE_MATTRESS_LATCH == False:
PE_MATTRESS_ACCUMULATOR = PE_MATTRESS_ACCUMULATOR + 1
PE_MATTRESS_LATCH = True
elif PE_MATTRESS == False and PE_MATTRESS_LATCH == True:
PE_MATTRESS_LATCH = False
elif PE_COMBINED == True and PE_COMBINED_LATCH == False:
PE_COMBINED_ACCUMULATOR = PE_COMBINED_ACCUMULATOR + 1
PE_COMBINED_LATCH = True
elif PE_COMBINED == False and PE_COMBINED_LATCH == True:
PE_COMBINED_LATCH = False
elif RESET == True:
PE_COMBINED_ACCUMULATOR = 0
PE_MATTRESS_ACCUMULATOR = 0
app=App()