對于這個項(xiàng)目,你需要:
Raspberry Pi
2 x LED
跳線電纜
面包板
電路圖和說明
電路圖非常簡單。我們只需要使用220歐姆電阻將兩個LED連接到Raspberry Pi上的GPIO 20和21。將引腳連接到每個LED的正極,并將每個LED的負(fù)極與220歐姆電阻連接到地。
完整的Python代碼
用于控制Raspberry Pi的GPIO的Python代碼通過GUI應(yīng)用程序的引腳可以在下面找到。將此代碼復(fù)制并粘貼到新文件中,并使用文件擴(kuò)展名保存:.py(例如,GUItest.py)。確保您位于同一目錄中,然后使用命令 python GUItest.py 從終端運(yùn)行程序。
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()
代碼演練
讓我們來看看代碼,看看每個部分的作用整個項(xiàng)目。
首先,我們?yōu)檫@個項(xiàng)目導(dǎo)入了所需的庫。 Tkinter庫幫助我們創(chuàng)建了GUI應(yīng)用程序,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)
之后,我們創(chuàng)建了Tk根小部件。只能有一個根小部件,它必須在任何其他小部件之前創(chuàng)建。
然后我們重命名該窗口的標(biāo)題并定義其大小。
master = tk.Tk()
master.title(“GPIO Control”)
master.geometry(“300x100”)
當(dāng)GPIO按下21按鈕,它將查找以前的狀態(tài)。如果前一個狀態(tài)為真(高狀態(tài)),它將使其為假(低狀態(tài)),反之亦然。
按鈕旁邊還有一個標(biāo)簽,告訴我們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)
最后,我們創(chuàng)建了三個按鈕。其中兩個控制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)
-
樹莓派
+關(guān)注
關(guān)注
120文章
1906瀏覽量
106719 -
gpio引腳
+關(guān)注
關(guān)注
0文章
8瀏覽量
2682
發(fā)布評論請先 登錄
相關(guān)推薦
GPIO在樹莓派中的應(yīng)用
樹莓派傳感器使用方法 樹莓派 Raspberry Pi 4優(yōu)缺點(diǎn)
使用樹莓派實(shí)現(xiàn)遠(yuǎn)程控制的技巧
樹莓派開發(fā)的最佳編程語言選擇
樹莓派gpio有什么用,樹莓派gpio接口及編程方法
什么是樹莓派?樹莓派是什么架構(gòu)的
類樹莓派網(wǎng)關(guān):物聯(lián)網(wǎng)應(yīng)用的新標(biāo)桿

評論