日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

在树莓派上用python控制LED

發布時間:2025/6/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在树莓派上用python控制LED 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

初步學習RPi.GPIO模塊的過程中寫了一個控制8個LED的模塊,基本上只是一個對RPi.GPIO的一個封裝

所需材料

  • 一個已經安裝配置好了的樹莓派
  • 連接控制樹莓派所用的其他必須設備
  • 200Ω電阻 x 8
  • led x 8
  • 面包板及連接線若干

?

電路連接

電路圖

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

編寫程序

安裝RPi.GPIO

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

Shell
12sudo apt-get updatesudo apt-get install python-dev python-rpi.gpio

來安裝

編寫模塊

用文本編輯器新建一個led.py文件。(高手們都用vi,我只會用nano…)

Shell
1 2 3 4 cd mdir GPIO cd GPIO nano led.py

python代碼如下:

Python
123456789101112131415161718192021222324252627282930import 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模塊:

Python
1 2 3 4 5 import led led.init() led.test() led.clean()

也可以直接在python shell中操作,這里是我在python shell中調用寫好的模塊的一個例子

要注意的是,GPIO操作需要管理員權限,因此要用sudo。譬如視頻中我在啟動python shell的時候前邊加了sudo:

Shell
1sudo python

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

Shell
1 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() 的一個封裝

總結

以上是生活随笔為你收集整理的在树莓派上用python控制LED的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。