在樹莓派上用python控制LED

2021-06-21 10:31:53 字數 3274 閱讀 9712

初步學習rpi.gpio模組的過程中寫了乙個控制8個led的模組,基本上只是乙個對rpi.gpio的乙個封裝

電路圖

按照電路圖所示,在麵包板上進行連線。

安裝rpi.gpio

首先得確定rpi.gpio已安裝。最新的系統已經自帶了,如果沒有的可以使用命令

sudo apt-get update

sudo apt-get install python-dev python-rpi.gpio

來安裝

編寫模組

用文字編輯器新建乙個led.py檔案。(高手們都用vi,我只會用nano...)

cd 

mdir gpio

cd gpio

nano led.py

python**如下:

import rpi.gpio as gpio

import time

channels = [16,18,22,24,26,19,21,23] 

def init():

gpio.setmode(gpio.board)

for x in channels:

gpio.setup(x,gpio.out)

pass

def on(i):

gpio.output(channels[i], gpio.high)

def off(i):

gpio.output(channels[i], gpio.low)

def ctrl(data):

for i in channels:

gpio.output(i, data & 0x1)

data = data >> 1

pass

def test():

for i in xrange(512):

ctrl(i)

time.sleep(0.1)

def clean():

gpio.cleanup()

你可以在樹莓派上直接編輯這個檔案,也可以將檔案在電腦上編輯好,然後用sftp或者linux下的scp命令傳到樹莓派上。

呼叫模組

你可以編寫乙個test.py呼叫剛剛編寫好的led模組:

import led

led.init()

led.test()

led.clean()

也可以直接在python shell中操作,這裡是我在python shell中呼叫寫好的模組的乙個例子

sudo python
而在執行自己寫的test.py的時候也要加sudo:

sudo python test.py
rpi.gpio模組函式說明:

rpi.gpio.setmode(naming_system)

設定將gpio針的命名方式。naming_system可用的取值有 rpi.gpio.bcm 和 rpi.gpio.board,分別代表boardcom命名系統和樹莓派板子上的命名系統。而因為使用bcm 的時候(據說)不同的版本bvm針腳定義不一樣,所以同一套程式在多個樹莓派系統上使用的時候建議用board。

rpi.gpio.setup(channel, state)

將標號為channel的針設定為state模式。channel取值為1~26,state取值為rpi.gpio.in 或者rpi.gpio.out,分別表示輸入和輸出。例如 rpi.gpio.setup(1, rpi.gpio.in)表示將1號針設定為輸入模式;rpi.gpio.setup(3, rpi.gpio.out)表示將3號針設定為輸出模式。具體哪個號是哪根取決於setmode()中設定成什麼。

rpi.gpio.output(channel, state)

將標號為channel的針設定為state指定的電平。channel取值為1~26,state取值為rpi.gpio.high 和rpi.gpio.low,或者1和0,或者true和false,表示高電平和低電平。例如rpi.gpio.output(1, 1) 表示把1號針設定為高電平,rpi.gpio.output(3, flase) 表示將3號針設定為低電平。具體哪個號是哪根取決於setmode()中設定成什麼。

rpi.gpio.input(channel)

獲取將標號為channel的針的電平磚頭。channel取值為1~26。例如rpi.gpio.input(1) 表示獲取1號針的狀態。

rpi.gpio.cleanup()

清除掉之前rpi.gpio.setup()設定的狀態。退出程式之前一定要呼叫,否則下次呼叫的時候會報錯。

led.py模組說明

channel中儲存的是連線中使用的針的標號,按順序。

init()是初始化gpio介面的**,使用控制lcd去前要呼叫。主要工作是設定介面命名模式和 將channel中的針設定為輸出模式

on()/off()是將channel 中第i個針設定為高電平/低電平

ctrl()是根據引數設定全8根針的電平。引數的低0位、低1位、低2位...分別表示channel下標為0、1、2...的針的電平狀況,1為高電平、0為低電平

test()是測試函式。用8位二進位制表示8個燈的狀態,每隔0.1秒到下乙個狀態: 0000 0000, 0000 0001, 0000 0010, 0000 0011,0000 0100 ... 實際上就是從0數到255

clean()是對 

rpi.gpio.cleanup() 的乙個封裝

---------update 2014-4-8 20:25:31-----------------

今天又用上了74hc164,下次再有進展的時候再加上去吧

在樹莓派上用python控制LED

初步學習rpi.gpio模組的過程中寫了乙個控制8個led的模組,基本上只是乙個對rpi.gpio的乙個封裝 電路圖按照電路圖所示,在麵包板上進行連線。首先得確定rpi.gpio已安裝。最新的系統已經自帶了,如果沒有的可以使用命令 shell 1 2 sudo apt getupdate sudo ...

在樹莓派上配置mono

mono是跨平台的.net編譯環境,試著在樹莓派上部署一下 1.獲取raspbian系統 如何獲取就不多說了,主要是要燒錄到sd卡里並正常啟動 1.1 獲取sudo許可權 建議使用管理員許可權,這樣問題可能少一些 也許更多 sudo s 2.安裝m4 gun tar zxvf m4 1.4.9.ta...

在樹莓派上安裝OpenVINO

準備工作 這裡我推薦2019 r3版本,之前裝了2020版本不好用,又退回到了2019 r3版本 開啟終端,執行命令 cd downloads 3.建立乙個安裝資料夾 sudo mkdir p opt intel openvino 4.解壓安裝包到安裝路徑下 sudo tar xf l openvi...