通過led控制器可以在流水點亮、間隔點亮、追逐點亮、全部亮並閃爍這四種模式中選擇點亮led燈的方式。
其中,↓表示有鍵按下,1 表示無鍵按下,x 表示不管有沒有按鍵; 流水點亮即為 led0 先亮,然後 led0 滅,led1 亮,依次類推;間隔點亮即為第一狀態為 led0 亮,第二狀態為 led0 保持亮、led2 亮,依次類推;追逐點亮即為第一狀態為只有 led0 亮,第二狀態為 led0 保持亮、led1 點亮,依次類推。
本次實驗的樹莓派gpio採用bcm編號方式。從左往右,6個led燈的正極依次連線樹莓派4的4、17、22、5、13、26號gpio口;4個按鍵依次連線樹莓派4的23、24、20、21號gpio口。
import rpi.gpio as gpio
import time
gpio.setmode(gpio.bcm) #bcm編號方式
pins_list = [4, 17, 22, 5, 13, 26] #6個led燈的正極所接引腳號
pins_flow = [4, 17, 22, 5, 13, 26, 13, 5, 22, 17] #流水點亮,依次將裡面的每個引腳置高電平,並迴圈
pins_inter = [[4], [4, 22], [4, 22, 13]] #間隔點亮,依次將裡面的每個引腳置高電平,並迴圈
pins_cater = [[4], [4, 17], [4, 17, 22], [4, 17, 22, 5], [4, 17, 22, 5, 13], [4, 17, 22, 5, 13, 26]] #追逐點亮
pins_all = [[4, 17, 22, 5, 13, 26, 13, 5, 22, 17]] #全部亮,並閃爍
gpio.setup(pins_list, gpio.out)
gpio.setup([23, 24, 20, 21], gpio.in, pull_up_down=gpio.pud_up) #在4個按鍵的引腳處置上拉電阻
gpio.output(pins_list, gpio.low) #初始化,將所有led燈的正極置低電平
# 通過pins、sleep_time來控制led燈點亮的方式
def led(pins, sleep_time):
while true:
for pin in pins: #依次將pins裡面的每組引腳置高電平,並迴圈
gpio.output(pin, gpio.high)
time.sleep(0.2)
gpio.output(pin, gpio.low)
time.sleep(sleep_time) #led燈暗的時間
if ((gpio.input(23) and gpio.input(24) and gpio.input(20) and gpio.input(21)) == 0):
return #如果有按鍵被按下,立刻退出led()函式
#迴圈檢測有沒按鍵被按下,如有按鍵被按下,執行該按鍵對應的函式
try:
while true:
if (gpio.input(23) == 0):
led(pins_flow, 0)
if (gpio.input(24) == 0):
led(pins_inter, 0)
if (gpio.input(20) == 0):
led(pins_cater, 0)
if (gpio.input(21) == 0):
led(pins_all, 0.1)
except keyboardinterrupt:
gpio.cleanup() #程式中止時清理gpio資源
注意:在led(pins, sleep_time)函式中,以下兩行**非常關鍵:
if ((gpio.input(23) and gpio.input(24) and gpio.input(20) and gpio.input(21)) == 0):
return #如果有按鍵被按下,立刻退出led()函式
這兩行**能檢測出當有按鍵被按下時,立即退出led()函式。這兩行**保證了不同的按鍵被按下時,能迅速切換到對應的led燈點亮模式。 樹莓派(十三) 多PWM通過GPIO口引腳輸出
import rpi.gpio as gpio import time gpio.setmode gpio.bcm gpio.setup 18,gpio.out pwm led0 gpio.pwm 18,10 將gpio27引腳的頻率設定為5hz 乙個脈衝時間長度0.2s pwm led0.star...
樹莓派入門(三)
經過前面兩步我們的樹莓派已經正常的工作起來了,但是在真正用它開發之前還需要進行一些列的配置以及軟體的安裝,這樣開發起來才會得心應手,下面我們介紹一下常用的軟體和服務 1 配置選項 樹莓派第一次使用的時候需要進行乙個簡單的配置,在命令列模式下執行以下命令 sudo raspi config 新舊版本的...
樹莓派的gpio埠
樹莓派的gpio埠圖 gpio readall gpio generalpurposei oports 意思為通用輸入 輸出埠,通俗地說,就是一些引腳,可以通過它們輸出高低電平或者通過它們讀入引腳的狀態 是高電平或是低電平。gpio是個比較重要的概念,使用者可以通過gpio口和硬體進行資料互動 如u...