對于這個項目,你需要:
Raspberry Pi
2 x LED
跳線電纜
面包板
電路圖和說明
電路圖非常簡單。我們只需要使用220歐姆電阻將兩個LED連接到Raspberry Pi上的GPIO 20和21。將引腳連接到每個LED的正極,并將每個LED的負極與220歐姆電阻連接到地。
完整的Python代碼
用于控制Raspberry Pi的GPIO的Python代碼通過GUI應用程序的引腳可以在下面找到。將此代碼復制并粘貼到新文件中,并使用文件擴展名保存:.py(例如,GUItest.py)。確保您位于同一目錄中,然后使用命令 python GUItest.py 從終端運行程序。
import Tkinter as tk
import RPi.GPIO as GPIO
from time import sleep
GPIO21 = 21
GPIO20 = 20
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO21, GPIO.OUT)
GPIO.setup(GPIO20, GPIO.OUT)
master = tk.Tk()
master.title(“GPIO Control”)
master.geometry(“300x100”)
GPIO21_state = True
GPIO20_State = True
def GPIO21button():
global GPIO21_state
if GPIO21_state == True:
GPIO.output(GPIO21, GPIO21_state)
GPIO21_state = False
ONlabel = tk.Label(master, text=“Turned ON”, fg=“green”)
ONlabel.grid(row=0, column=1)
else:
GPIO.output(GPIO21, GPIO21_state)
GPIO21_state = True
ONlabel = tk.Label(master, text=“Turned OFF”, fg=“red”)
ONlabel.grid(row=0, column=1)
def GPIO20button():
global GPIO20_State
if GPIO20_State == True:
GPIO.output(GPIO20, GPIO20_State)
GPIO20_State = False
OFFlabel = tk.Label(master, text=“Turned ON”, fg=“green”)
OFFlabel.grid(row=1, column=1)
else:
GPIO.output(GPIO20, GPIO20_State)
GPIO20_State = True
OFFlabel = tk.Label(master, text=“Turned OFF”, fg=“red”)
OFFlabel.grid(row=1, column=1)
ONbutton = tk.Button(master, text=“GPIO 21”, bg=“blue”, command=GPIO21button)
ONbutton.grid(row=0, column=0)
OFFbutton = tk.Button(master, text=“GPIO 20”,bg=“blue” , command=GPIO20button)
OFFbutton.grid(row=1, column=0)
Exitbutton = tk.Button(master, text=“Exit”,bg=“red”, command=master.destroy)
Exitbutton.grid(row=2, column=0)
master.mainloop()
代碼演練
讓我們來看看代碼,看看每個部分的作用整個項目。
首先,我們為這個項目導入了所需的庫。 Tkinter庫幫助我們創建了GUI應用程序,RPi.GPIO庫控制著Raspberry Pi的GPIO引腳。
import Tkinter as tk
import RPi.GPIO as GPIO
from time import sleep
然后我們使用BCM引腳編號為我們的LED初始化了GPIO引腳21和20,將這些引腳聲明為輸出。
GPIO21 = 21
GPIO20 = 20
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO21, GPIO.OUT)
GPIO.setup(GPIO20, GPIO.OUT)
之后,我們創建了Tk根小部件。只能有一個根小部件,它必須在任何其他小部件之前創建。
然后我們重命名該窗口的標題并定義其大小。
master = tk.Tk()
master.title(“GPIO Control”)
master.geometry(“300x100”)
當GPIO按下21按鈕,它將查找以前的狀態。如果前一個狀態為真(高狀態),它將使其為假(低狀態),反之亦然。
按鈕旁邊還有一個標簽,告訴我們LED是否為高電平或LOW。
def GPIO21button():
global GPIO21_state
if GPIO21_state == True:
GPIO.output(GPIO21, GPIO21_state)
GPIO21_state = False
ONlabel = tk.Label(master, text=“Turned ON”, fg=“green”)
ONlabel.grid(row=0, column=1)
else:
GPIO.output(GPIO21, GPIO21_state)
GPIO21_state = True
ONlabel = tk.Label(master, text=“Turned OFF”, fg=“red”)
ONlabel.grid(row=0, column=1)
GPIO 20按鈕的工作方式類似:
def GPIO20button():
global GPIO20_State
if GPIO20_State == True:
GPIO.output(GPIO20, GPIO20_State)
GPIO20_State = False
OFFlabel = tk.Label(master, text=“Turned ON”, fg=“green”)
OFFlabel.grid(row=1, column=1)
else:
GPIO.output(GPIO20, GPIO20_State)
GPIO20_State = True
OFFlabel = tk.Label(master, text=“Turned OFF”, fg=“red”)
OFFlabel.grid(row=1, column=1)
最后,我們創建了三個按鈕。其中兩個控制GPIO引腳20和21,第三個是退出按鈕。
ONbutton = tk.Button(master, text=“GPIO 21”, bg=“blue”, command=GPIO21button)
ONbutton.grid(row=0, column=0)
OFFbutton = tk.Button(master, text=“GPIO 20”,bg=“blue” , command=GPIO20button)
OFFbutton.grid(row=1, column=0)
Exitbutton = tk.Button(master, text=“Exit”,bg=“red”, command=master.destroy)
Exitbutton.grid(row=2, column=0)
-
樹莓派
+關注
關注
116文章
1699瀏覽量
105531 -
gpio引腳
+關注
關注
0文章
7瀏覽量
2624
發布評論請先 登錄
相關推薦
評論