學習使用Raspberry Pi上的GPIO引腳將為您帶來無限可能。通過初學者項目學習的基本原理為DIY電子和編程的實用知識鋪平了道路。
本教程將向您展示兩種向Raspberry Pi項目添加按鈕的方法。該按鈕將用于控制LED。視頻下方提供了書面說明。
您將需要
要開始使用,請確保您具有以下組件:
1 x Raspberry Pi(可以的話,本教程中會使用3B型)
1 x按鈕
1 x LED
1 x 220歐姆電阻(更高的值沒問題,您的LED就會變暗)
1 x面包板
連接電線
一旦收集,您應該擁有外觀美觀的組件像這樣的東西:
您還需要安裝Raspbian操作系統(tǒng)的SD卡。最快的方法是使用NOOBS(全新的開箱即用軟件)映像。該視頻中提供了有關(guān)如何執(zhí)行此操作的說明:
設置電路
您將使用Pi的GPIO引腳來制作電路,如果您不熟悉,通過它們,我們的Raspberry Pi GPIO引腳指南將有所幫助。此處的電路幾乎與我們以前的Raspberry Pi LED項目相同,只是增加了您今天要使用的按鈕。
根據(jù)下圖設置電路:
5v 和 GND 引腳連接到面包板的電源軌。
引腳12(GPIO 18)連接到LED的正極。
電阻的一個引腳連接到LED的負極。
Pin 16(GPIO 23)固定在按鈕的一側(cè),另一側(cè)固定在面包板的接地軌上。面包板的接地軌。
一旦設置好,它的外觀應為:
檢查
方法1:RPi.GPIO庫
一旦Pi啟動,請轉(zhuǎn)到菜單,然后單擊“確定”。選擇編程》 T honny Python IDE 。一個新的Python腳本將打開。如果您是Python的新手,那么它對于初學者來說是一種很棒的語言,并且在完成本教程后,有很多不錯的地方可以了解有關(guān)Python的更多信息!
首先導入RPi.GPIO庫,然后設置板模式。
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
現(xiàn)在,聲明LED和按鈕引腳號的變量。
ledPin = 12
buttonPin = 16
請注意,由于我們將板模式設置為 BOARD ,因此我們使用的是引腳號而不是GPIO號。如果讓您感到困惑,Raspberry Pi引腳分布圖可以幫助您清除它。
設置按鈕
是時候設置GPIO引腳了。使用上拉電阻將LED引腳設置為輸出,將按鈕引腳設置為輸入
GPIO.setup(ledPin, GPIO.OUT)
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.IN之后的文本表示內(nèi)部上拉電阻。 Raspberry Pi的上拉電阻器。您需要啟用它才能從按鈕上獲得清晰的讀數(shù)。由于該按鈕將連接到接地引腳,因此我們需要一個上拉電阻將輸入引腳保持為高電平,直到您按下它為止。
在繼續(xù)操作之前,我們先來看一下上拉和下拉
中斷:上拉/下拉電阻
在將GPIO引腳配置為輸入時,它將讀取該引腳以確定其狀態(tài)。在此電路中,您需要讀取引腳是 HIGH 還是 LOW 以便在按下按鈕時觸發(fā)LED。如果這是引腳可以具有的唯一狀態(tài),那么這將很簡單,但是不幸的是,還有第三種狀態(tài):浮動。
浮動引腳的值介于高電平和低電平之間,導致輸入行為異常。上拉/下拉電阻器可以解決這個問題。
上圖是按鈕和Raspberry Pi的簡化圖。 GPIO引腳通過按鈕接地。內(nèi)部上拉電阻將GPIO引腳連接到內(nèi)部Pi電源。該電流流動,并且該引腳被安全地拉高。
按下按鈕時,GPIO引腳直接連接到接地引腳,并且該按鈕讀為低電平。
下拉電阻用于將開關(guān)連接到電源引腳時的情況。這次,內(nèi)部電阻器將GPIO引腳接地,并保持低電平,直到您按下按鈕為止。
上拉和下拉電阻器理論乍一看令人困惑,但重要的知識是與微控制器一起工作?,F(xiàn)在,如果您不太了解它,請不要擔心!
讓我們繼續(xù)我們停下來的地方。
程序循環(huán)
接下來,設置程序循環(huán):
while True:
buttonState = GPIO.input(buttonPin)
if buttonState == False:
GPIO.output(ledPin, GPIO.HIGH)
else:
GPIO.output(ledPin, GPIO.LOW)
True 循環(huán)會不斷在其中運行代碼,直到結(jié)束程序。每次循環(huán)時,它都會通過讀取 buttonPin 的輸入來更新 buttonState 。當未按下按鈕時,它保持高。
按下按鈕后, buttonState 將變?yōu)?LOW 。這會觸發(fā) if語句,因為 False 與 LOW 相同,并且LED點亮。 else 語句在buttonPin不為False時關(guān)閉LED。
保存并運行腳本
通過單擊文件》保存腳本另存為并選擇文件名。您可以通過單擊Thonny工具欄中的綠色 Play 按鈕來運行草圖。
現(xiàn)在按一下按鈕,然后按LED應該點亮!隨時按紅色的停止按鈕以停止程序
如果遇到困難,請檢查代碼和電路
方法2:GPIO零庫
RPi.GPIO庫太棒了,但是有個新手正在嘗試。 GPIO零庫是由Raspberry Pi社區(qū)經(jīng)理Ben Nuttall創(chuàng)建的,其目的是使代碼更簡單,更易于讀寫。
要測試新庫,請打開一個新的Thonny文件,然后導入
from gpiozero import LED, Button
from signal import pause
您會注意到您沒有導入整個庫。由于僅使用LED和按鈕,因此腳本中僅需要這些模塊。我們還從信號庫(用于事件管理的Python庫)導入暫停。
使用GPIO零設置引腳容易得多:
led = LED(18)
button = Button(23)
由于GPIO零庫具有用于LED和按鈕的模塊,因此您無需像以前那樣設置輸入和輸出。您會注意到,盡管引腳沒有改變,但此處的數(shù)字與上面的數(shù)字有所不同。這是因為GPIO零僅使用GPIO引腳號(也稱為Broadcom或BCM編號)。
腳本的其余部分只有三行:
button.when_pressed = led.on
button.when_released = led.off
pause()
此處的 pause()調(diào)用只是在腳本到達底部時停止退出腳本。只要按下并釋放按鈕,就會觸發(fā)兩個按鈕事件。保存并運行腳本,您將看到與以前相同的結(jié)果!
向Raspberry Pi添加按鈕的兩種方法
在設置按鈕的兩種方法中, GPIO Zero方法似乎是最簡單的。由于大多數(shù)初學者Raspberry Pi項目都使用RPi.GPIO庫,因此仍然值得學習。就像這個項目一樣簡單,這些知識可以用于很多事情。
使用GPIO引腳是學習和發(fā)明自己的設備的好方法,但是它遠遠超出了您可以做的一切。 Pi。我們的Raspberry Pi非官方指南充滿了創(chuàng)意和教程,您可以自己嘗試一下!有關(guān)另一個類似的教程,請查看如何制作Wi-Fi連接按鈕。
責任編輯:wv
-
按鈕
+關(guān)注
關(guān)注
0文章
134瀏覽量
12741 -
樹莓派
+關(guān)注
關(guān)注
116文章
1699瀏覽量
105537
發(fā)布評論請先 登錄
相關(guān)推薦
評論