引腳復(fù)用配置工具
雖然從硬件上看,擴(kuò)展出來(lái)的引腳只有40個(gè),不過(guò)大部分引腳還可以配置成多種功能,這樣延伸出來(lái)變化可就多了,那如何配置引腳的不同功能呢?
我們可以使用旭日X3派中提供的srpi-config工具進(jìn)行配置。
直接在終端中輸入這個(gè)指令,就可以看到這樣的窗口,okay配置對(duì)應(yīng)管腳為專(zhuān)用功能,disabled配置對(duì)應(yīng)管腳為GPIO模式,按照自己的需要進(jìn)行配置即可,配置完成后重啟才會(huì)生效。
了解了GPIO的概念,接下來(lái)我們就要開(kāi)始編程啦。
數(shù)字輸入編程
首先我們來(lái)看下最基本的數(shù)字輸入測(cè)試,讀取一個(gè)按鍵的狀態(tài)。
硬件接線(xiàn)
我們將按鍵的一邊連接到旭日X3派的38號(hào)引腳上,這是一個(gè)GPIO的接口,另一邊連接到39號(hào)引腳,也就是GND。
原理很簡(jiǎn)單,按鍵沒(méi)按下時(shí),導(dǎo)線(xiàn)是斷開(kāi)的,GPIO是默認(rèn)的狀態(tài),按鍵按下后,導(dǎo)線(xiàn)就會(huì)導(dǎo)通,GPIO的狀態(tài)變成了GND。
這樣,我們就可以通過(guò)電平的變化,知道按鍵的狀態(tài)啦。
運(yùn)行例程
我們不妨來(lái)運(yùn)行一下,看下實(shí)際效果是不是這樣。
$ sudo python3 simple_input.py
我們將一個(gè)按鍵開(kāi)關(guān)接到對(duì)應(yīng)的管腳上, 然后連接到旭日X3PI當(dāng)中,運(yùn)行剛才的程序。之后我們按下或是松開(kāi)按鍵時(shí),他都會(huì)打印出對(duì)應(yīng)的電平變化。
按下顯示的就是LOW,也就是低電平,松開(kāi)就是HIGH,也就是高電平。
代碼解析
數(shù)字輸入的功能實(shí)現(xiàn)啦,我們來(lái)看下代碼是如何實(shí)現(xiàn)的。
simple_input.py:
#!/usr/bin/env python3
import Hobot.GPIO as GPIO
import time
# 定義使用的GPIO通道為38
input_pin = 38 # BOARD 編碼 38
def main():
prev_value = None
# 設(shè)置管腳編碼模式為硬件編號(hào) BOARD
GPIO.setmode(GPIO.BOARD)
# 設(shè)置為輸入模式
GPIO.setup(input_pin, GPIO.IN)
print("Starting demo now! Press CTRL+C to exit")
try:
while True:
# 讀取管腳電平
value = GPIO.input(input_pin)
if value != prev_value:
if value == GPIO.HIGH:
value_str = "HIGH"
else:
value_str = "LOW"
print("Value read from pin {} : {}".format(input_pin, value_str))
prev_value = value
time.sleep(1)
finally:
GPIO.cleanup()
if __name__=='__main__':
main()
我們?cè)赑ython中需要引入X3Pi的GPIO庫(kù),從而使用對(duì)應(yīng)的GPIO功能。主函數(shù)里首先需要定義了一個(gè)變量來(lái)存儲(chǔ)這個(gè)管腳的電平信號(hào)。
進(jìn)行初始化,設(shè)置管腳的編碼模式為BOARD模式,之后定義輸入用的管腳,這里使用的是BOARD編碼,因?yàn)樗堑?8個(gè)管腳,所以為38號(hào)。之后的話(huà)就會(huì)進(jìn)入到循環(huán)當(dāng)中,這樣的一個(gè)函數(shù)就可以讀出當(dāng)前的電平值。
沒(méi)有按下按鍵的時(shí)候,38管腳和GND是斷開(kāi)的,他就是高電平,按下按鍵時(shí),就和GND導(dǎo)通了,這個(gè)管腳就會(huì)編程低電平。
如果電平值和上一次存儲(chǔ)的不一致,后面的判斷就會(huì)判斷出是升高還是降低,最后會(huì)把結(jié)果打印出來(lái)。松開(kāi)按鍵時(shí)同理。
-
硬件
+關(guān)注
關(guān)注
11文章
3252瀏覽量
66112 -
引腳
+關(guān)注
關(guān)注
16文章
1181瀏覽量
50274 -
數(shù)字輸出
+關(guān)注
關(guān)注
0文章
24瀏覽量
8922 -
數(shù)字輸入
+關(guān)注
關(guān)注
0文章
19瀏覽量
7826
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論