學(xué)習(xí)了GPIO的輸入與輸出功能后,我們就可以做一些自動(dòng)化的功能了。
硬件接線
比如我們同時(shí)連接一個(gè)按鍵和LED燈,嘗試實(shí)現(xiàn)按鍵被按下,燈被點(diǎn)亮,松開(kāi),燈熄滅,這樣的功能。
運(yùn)行示例程序
我們通過(guò)這個(gè)例程來(lái)試一試效果如何?
$ sudo python3 button_led.py
我們來(lái)看一下具體的操作,同樣的,按照剛才的設(shè)置,將實(shí)物連接完成,然后連接到X3Pi,運(yùn)行剛才的程序。按下按鍵后,就可以看到LED被點(diǎn)亮了,松開(kāi)之后,LED就熄滅了。
代碼解析
button_led.py
#!/usr/bin/env python3
import Hobot.GPIO as GPIO
import time
# 定義使用的GPIO通道:
# 36號(hào)作為輸出,可以點(diǎn)亮一個(gè)LED
# 38號(hào)作為輸入,可以接一個(gè)按鈕
led_pin = 36 # BOARD 編碼 36
but_pin = 38 # BOARD 編碼 38
# 禁用警告信息
GPIO.setwarnings(False)
def main():
prev_value = None
# Pin Setup:
GPIO.setmode(GPIO.BOARD) # BOARD pin-numbering scheme
GPIO.setup(led_pin, GPIO.OUT) # LED pin set as output
GPIO.setup(but_pin, GPIO.IN) # Button pin set as input
# Initial state for LEDs:
GPIO.output(led_pin, GPIO.LOW)
print("Starting demo now! Press CTRL+C to exit")
try:
while True:
curr_value = GPIO.input(but_pin)
if curr_value != prev_value:
GPIO.output(led_pin, curr_value)
prev_value = curr_value
print("Outputting {} to Pin {}".format(curr_value, led_pin))
time.sleep(1)
finally:
GPIO.cleanup() # cleanup all GPIO
if __name__ == '__main__':
main()
基本的配置還是一樣的,引入基本的庫(kù),然后設(shè)置為BOARD模式,然后初始化兩個(gè)管腳,一個(gè)用來(lái)讀取按鍵的通斷,一個(gè)用來(lái)控制LED的亮滅,之后只需要判斷按鍵的狀態(tài)來(lái)做出對(duì)應(yīng)的控制LED的動(dòng)作就可以了。
-
led
+關(guān)注
關(guān)注
242文章
23391瀏覽量
663704 -
程序
+關(guān)注
關(guān)注
117文章
3798瀏覽量
81469 -
數(shù)字輸出
+關(guān)注
關(guān)注
0文章
25瀏覽量
8954 -
數(shù)字輸入
+關(guān)注
關(guān)注
0文章
20瀏覽量
7859
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
DPDK安裝教程和DPDK程序運(yùn)行收發(fā)包示例程序及性能對(duì)比實(shí)驗(yàn)的詳細(xì)概述
![DPDK安裝教程和DPDK<b class='flag-5'>程序</b>運(yùn)行收發(fā)包<b class='flag-5'>示例程序</b>及性能對(duì)比實(shí)驗(yàn)的詳細(xì)概述](https://file.elecfans.com/web1/M00/62/DF/o4YBAFuNAiSAFIW-AAEOf1XEVW4373.png)
Python使用示例程序和工程文件免費(fèi)下載
![Python使用<b class='flag-5'>示例程序</b>和工程文件免費(fèi)下載](https://file.elecfans.com/web1/M00/BE/FA/pIYBAF7m0PGAEiBvAAE8dH4MKIc115.png)
STM32 之 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動(dòng)庫(kù)詳解(架構(gòu)+文件+函數(shù)+使用說(shuō)明+示例程序)
![STM32 之 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動(dòng)庫(kù)詳解(架構(gòu)+文件+函數(shù)+使用說(shuō)明+<b class='flag-5'>示例程序</b>)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
電子羅盤磁場(chǎng)傳感器模塊資料(含產(chǎn)品說(shuō)明書(shū)、示例程序)
ADS1256+STM32F103RCTx示例程序
CP Software Cluster示例程序介紹
![CP Software Cluster<b class='flag-5'>示例程序</b>介紹](https://file1.elecfans.com/web2/M00/A2/D2/wKgZomUBfGaAKk7KAANhtqU5FNU781.jpg)
RX722M的示例程序說(shuō)明
![RX722M的<b class='flag-5'>示例程序</b>說(shuō)明](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論