先來一張效果圖吧:
提示
用到的工具或軟件有:
- WiringPi
- orangepi_PC_gpio_pyH3
- US-015模塊一個(gè)
- 杜邦線若干
準(zhǔn)備工作
1.安裝WiringPi
安裝方法來自官方用戶手冊(cè):
安裝源碼需要的編譯工具
$ sudo apt-get install gcc g++ make
編譯GPIO 的H3 的驅(qū)動(dòng)
git clone https://github.com/kazukioishi/WiringOP.git -b h3
cd WiringOP
chmod +x ./build
sudo ./build
GPIO 打印信息
gpio -v
gpio version: 2.20
Copyright (c) 2012-2014 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Banana Pro Details:
Type: Banana Pro, Revision: 1.2, Memory: 1024MB, Maker: LeMaker
顯示
gpio reada
2.安裝 orangepi_PC_gpio_pyH3
在github上下載orangepi_PC_gpio_pyH3或者使用如下命令clone:
git clone https://github.com/duxingkei33/orangepi_PC_gpio_pyH3.git
下載完成后執(zhí)行以下命令安裝:
python setup.py install
若提示 Python.h No such file or directory
請(qǐng)運(yùn)行以下命令安裝 python-dev
apt install python-dev
再次執(zhí)行安裝命令即可
3.連接US-015模塊至OrangePi Lite
US-015 模塊有一個(gè)4Pin接口
從左到右依次編號(hào)1,2,3,4洪碳。它們的定義如下:
- 1號(hào)Pin:接VCC電源(直流5V)蛮浑。
- 2號(hào)Pin:接外部電路的Trig端槐脏,向此管腳輸入一個(gè)10uS以上的高電平互广,可觸發(fā)模塊測(cè)距。
- 3號(hào)Pin:接外部電路的Echo端,當(dāng)測(cè)距結(jié)束時(shí),此管腳會(huì)輸出一個(gè)高電平泪姨,電平寬度為超聲波往返時(shí)間之和。
-
4號(hào)Pin:接外部電路的地饰抒。
OPI Lite的GPIO圖如下:
將1號(hào)Pin連接至GPIO的2口肮砾,2-4分別連至GPIO的35(PA10),37(PA20)袋坑,39(GND)口仗处。
編寫代碼
vi length.py
from pyA20.gpio import gpio
from pyA20.gpio import port
import time
def checkdist():
# 設(shè)置PA10為高電平,持續(xù)15微秒(大于10均可)
gpio.output(port.PA10,1)
time.sleep(0.000015)
gpio.output(port.PA10,0)
# 當(dāng)PA20接收到高電平信號(hào)后開始記錄時(shí)間枣宫,高電平小時(shí)候記錄時(shí)間
while not gpio.input(port.PA20):
pass
t1=time.time()
while gpio.input(port.PA20):
pass
t2=time.time()
# 根據(jù)超聲波速度計(jì)算距離
return (t2-t1)*340/2
# 初始化gpio
gpio.init()
# 設(shè)置PA10口為output
gpio.setcfg(port.PA10,1)
# 設(shè)置PA20口為input
gpio.setcfg(port.PA20,0)
# 等待2秒
time.sleep(2)
while True:
print 'Distance : %0.2f m' %checkdist()
# 每隔三秒獲取距離
time.sleep(0.3)
最后執(zhí)行
python length.py
即可看到運(yùn)行結(jié)果疆柔。
簡(jiǎn)書上好像沒有代碼高亮,看起來不是很方便镶柱,可以去我的博客閱讀體驗(yàn)更佳 虛耗的博客