Python 控制樹莓派 GPIO 輸出:控制 LED 燈


樹莓派 GPIO 控制輸出的入門應該都是從控制 LED 燈開始的吧。

 

樹莓派版本:Model 3B+

樹莓派系統:Raspbian Stretch with desktop and recommended software,April 2019

連接裝置

准備一個 LED 燈,兩個兩頭都為母的杜邦線。對照下圖連接樹莓派和 LED 燈,要求一個是地線(GND)連接燈的負極,一個有 GPIO + BCM 編號連接正極。我選擇了 pin 號為 6 和 12 的兩個引腳。你也可以選擇別的,記得將之后的代碼中 BCM 編號修改正確

 

在斷電狀態下連接。連接好的如下圖,我的 LED 燈有正負極的提示,圖中所示紅色箭頭指向的是正極,藍色箭頭是負極。如果你的 LED 燈是最簡單的那種,長引腳就是正極,短的負極。

樹莓派開機。

安裝 RPI.GPIO

我裝的樹莓派系統已經滿足所需要的環境,不需要額外下載。

你可以測試是否已經有該模塊,在終端打開 Python3,然后嘗試導入庫: import RPi.GPIO as GPIO 。如果沒有出現error,就表示已經有了,可以直接跳到下一步。

如果出現錯誤,則執行以下命令:

sudo apt-get update
sudo apt-get install python3-rpi.gpio

測試 GPIO

按下圖所示依次輸入命令,觀察。

GPIO.setmode() 有兩種參數可以選擇:可以使用 GPIO.BOARD 選項告訴庫根據 GPIO 接口的引腳號引用信號,或者使用 Broadcom 芯片的信號編號( GPIO.setmode(GPIO.BCM) )。

在選擇了模式之后,需要確定在程序中使用哪一個 GPIO 信號以及將家門用來作為輸入還是輸出:GPIO.setup(channel, direction)。我給的例子里是 GPIO.setup(18, GPIO.OUT) 。

后面兩個命令控制燈的開關: GPIO.output(18, GPIO.HIGH) 和 GPIO.output(18, GPIO.LOW) 。

 GPIO.cleanup() 用於重置 GPIO 接口,它把所有的 GPIO 引腳設置為低電平狀態,所以沒有多余的信號出現在界面上。在不使用改函數的情況下,如果試圖配置一個已分配信號值的 GPIO 信號引腳,那么 RPi.GPIO 模塊會產生一條警告信息。

閃爍 LED

然后我在樹莓派上編寫了下面這個代碼讓 LED 燈閃爍五次,保存在 Desktop,命名為 led.py。

#!/usr/bin/python3

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
GPIO.output(18, GPIO.LOW)
blinks = 0
print('開始閃爍')
while (blinks < 5):
    GPIO.output(18, GPIO.HIGH)
    time.sleep(1.0)
    GPIO.output(18, GPIO.LOW)
    time.sleep(1.0)
    blinks = blinks + 1
GPIO.output(18, GPIO.LOW)
GPIO.cleanup()
print('結束閃爍')

 

演示結果:

 

也可以以通過 PWM 信號來達到讓燈閃爍的效果。

#!/usr/bin/python3

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
blink = GPIO.PWM(18, 1)
try:
    blink.start(50)
    while True:
        pass
except KeyboardInterrupt:
    blink.stop()
GPIO.cleanup()

start() 方法指定了占空比(從 1 到 100)。在開始 PWM 信號后,程序就可以解放出來做其他事情了。GPIO 18 會持續發送 PWM 信號,直到停止它。 blink = GPIO.PWM(18, 1) 指定了 PWM 信號以 1HZ 的頻率發送,燈 1 秒閃爍一次。按 Control + C 中止閃爍。

參考資料

《樹莓派Python編程 入門與實戰(第2版)》,人民郵電出版社


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM