學(xué)習(xí)了GPIO的輸入與輸出功能后,我們就可以做一些自動(dòng)化的功能了。
硬件接線
比如我們同時(shí)連接一個(gè)按鍵和LED燈,嘗試實(shí)現(xiàn)按鍵被按下,燈被點(diǎn)亮,松開,燈熄滅,這樣的功能。
運(yùn)行示例程序
我們通過這個(gè)例程來試一試效果如何?
$ sudo python3 button_led.py
我們來看一下具體的操作,同樣的,按照剛才的設(shè)置,將實(shí)物連接完成,然后連接到X3Pi,運(yùn)行剛才的程序。按下按鍵后,就可以看到LED被點(diǎn)亮了,松開之后,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()
基本的配置還是一樣的,引入基本的庫,然后設(shè)置為BOARD模式,然后初始化兩個(gè)管腳,一個(gè)用來讀取按鍵的通斷,一個(gè)用來控制LED的亮滅,之后只需要判斷按鍵的狀態(tài)來做出對(duì)應(yīng)的控制LED的動(dòng)作就可以了。
-
led
+關(guān)注
關(guān)注
242文章
23252瀏覽量
660558 -
程序
+關(guān)注
關(guān)注
117文章
3785瀏覽量
81002 -
數(shù)字輸出
+關(guān)注
關(guān)注
0文章
24瀏覽量
8923 -
數(shù)字輸入
+關(guān)注
關(guān)注
0文章
19瀏覽量
7831
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論