python控制灯_Python 控制树莓派 GPIO 输出:控制 LED 灯
樹(shù)莓派 GPIO 控制輸出的入門(mén)應(yīng)該都是從控制 LED 燈開(kāi)始的吧。
樹(shù)莓派版本:Model 3B+
樹(shù)莓派系統(tǒng):Raspbian Stretch with desktop and recommended software,April 2019
連接裝置
準(zhǔn)備一個(gè) LED 燈,兩個(gè)兩頭都為母的杜邦線。對(duì)照下圖連接樹(shù)莓派和 LED 燈,要求一個(gè)是地線(GND)連接燈的負(fù)極,一個(gè)有 GPIO + BCM 編號(hào)連接正極。我選擇了 pin 號(hào)為 6 和 12 的兩個(gè)引腳。你也可以選擇別的,記得將之后的代碼中 BCM 編號(hào)修改正確
在斷電狀態(tài)下連接。連接好的如下圖,我的 LED 燈有正負(fù)極的提示,圖中所示紅色箭頭指向的是正極,藍(lán)色箭頭是負(fù)極。如果你的 LED 燈是最簡(jiǎn)單的那種,長(zhǎng)引腳就是正極,短的負(fù)極。
樹(shù)莓派開(kāi)機(jī)。
安裝 RPI.GPIO
我裝的樹(shù)莓派系統(tǒng)已經(jīng)滿足所需要的環(huán)境,不需要額外下載。
你可以測(cè)試是否已經(jīng)有該模塊,在終端打開(kāi) Python3,然后嘗試導(dǎo)入庫(kù): import RPi.GPIO as GPIO 。如果沒(méi)有出現(xiàn)error,就表示已經(jīng)有了,可以直接跳到下一步。
如果出現(xiàn)錯(cuò)誤,則執(zhí)行以下命令:
sudo apt-get updatesudo apt-get install python3-rpi.gpio
測(cè)試 GPIO
按下圖所示依次輸入命令,觀察。
GPIO.setmode() 有兩種參數(shù)可以選擇:可以使用 GPIO.BOARD 選項(xiàng)告訴庫(kù)根據(jù) GPIO 接口的引腳號(hào)引用信號(hào),或者使用 Broadcom 芯片的信號(hào)編號(hào)( GPIO.setmode(GPIO.BCM) )。
在選擇了模式之后,需要確定在程序中使用哪一個(gè) GPIO 信號(hào)以及將家門(mén)用來(lái)作為輸入還是輸出:GPIO.setup(channel, direction)。我給的例子里是 GPIO.setup(18, GPIO.OUT) 。
后面兩個(gè)命令控制燈的開(kāi)關(guān): GPIO.output(18, GPIO.HIGH) 和 GPIO.output(18, GPIO.LOW) 。
GPIO.cleanup() 用于重置 GPIO 接口,它把所有的 GPIO 引腳設(shè)置為低電平狀態(tài),所以沒(méi)有多余的信號(hào)出現(xiàn)在界面上。在不使用改函數(shù)的情況下,如果試圖配置一個(gè)已分配信號(hào)值的 GPIO 信號(hào)引腳,那么 RPi.GPIO 模塊會(huì)產(chǎn)生一條警告信息。
閃爍 LED
然后我在樹(shù)莓派上編寫(xiě)了下面這個(gè)代碼讓 LED 燈閃爍五次,保存在 Desktop,命名為 led.py。
#!/usr/bin/python3
importRPi.GPIO as GPIOimporttime
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
GPIO.output(18, GPIO.LOW)
blinks=0print('開(kāi)始閃爍')while (blinks < 5):
GPIO.output(18, GPIO.HIGH)
time.sleep(1.0)
GPIO.output(18, GPIO.LOW)
time.sleep(1.0)
blinks= blinks + 1GPIO.output(18, GPIO.LOW)
GPIO.cleanup()print('結(jié)束閃爍')
演示結(jié)果:
也可以以通過(guò)PWM 信號(hào)來(lái)達(dá)到讓燈閃爍的效果。
#!/usr/bin/python3
importRPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
blink= GPIO.PWM(18, 1)try:
blink.start(50)whileTrue:pass
exceptKeyboardInterrupt:
blink.stop()
GPIO.cleanup()
start() 方法指定了占空比(從 1 到 100)。在開(kāi)始 PWM 信號(hào)后,程序就可以解放出來(lái)做其他事情了。GPIO 18 會(huì)持續(xù)發(fā)送 PWM 信號(hào),直到停止它。 blink = GPIO.PWM(18, 1) 指定了 PWM 信號(hào)以 1HZ 的頻率發(fā)送,燈 1 秒閃爍一次。按 Control + C 中止閃爍。
參考資料
《樹(shù)莓派Python編程 入門(mén)與實(shí)戰(zhàn)(第2版)》,人民郵電出版社
總結(jié)
以上是生活随笔為你收集整理的python控制灯_Python 控制树莓派 GPIO 输出:控制 LED 灯的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 正则表达式如何匹配正反斜杠
- 下一篇: 谈谈对python的理解_浅谈对pyth