1、安装gpio库
注意这里安装没有采用原始的gpio库,而是git clone后修改了gpio.py文件,因为原始的方式打印了调试信息,影响了观察数据
sudo git clone https://github.com/vitiral/gpio.git
查看下载的文件,并打开目录,修改gpio.py文件
保存并安装gpio库
sudo python setup.py install
2、连接超声波模块和pi
3、测试代码
#!/usr/bin/python
# -*- coding:utf-8 -*-
'''
HC-SR04 NanoPI NEO2 Pi
VCC <-> 5V(Pin4)
GND <-> GND(Pin6)
TRIG <-> GPIOG7
ECHO <-> GPIOG6
'''
'''
测距时,被测物体的面积不少于0.5平方米且平面尽量要求平整,否则会影响测量结果。
测距原理:
1.外部给模块TRIG引脚提供一个10us以上脉冲触发信号;
2.模块内部将发出8个40KHz周期电平并检测回波;
3.模块一旦检测到有回波信号则输出回响信号,回波信号的脉冲宽度与所测的距离成正比。脉冲持续的时间就是超声波从发射到返回的时间。
测试距离 = 高电平持续的时间 * 声速 / 2
'''
import gpio as GPIO
import time
# BCM GPIO编号
TRIG = 199
ECHO = 198
def checkdist():
GPIO.output(TRIG, True)
time.sleep(0.000015)
GPIO.output(TRIG, False)
while not GPIO.input(ECHO):
pass
t1 = time.time()
while GPIO.input(ECHO):
pass
t2 = time.time()
return (t2 - t1) * 340 / 2
def setup():
#采用BCM编号
GPIO.setup(TRIG, GPIO.OUT, initial=False)
GPIO.setup(ECHO, GPIO.IN)
time.sleep(2)
if __name__ == '__main__':
setup();
print 'init done!'
try:
while True:
print 'Distance: %0.2f m' %checkdist()
time.sleep(0.5)
except KeyboardInterrupt:
GPIO.cleanup()
4、运行结果
1、安装gpio库
注意这里安装没有采用原始的gpio库,而是git clone后修改了gpio.py文件,因为原始的方式打印了调试信息,影响了观察数据
sudo git clone https://github.com/vitiral/gpio.git
查看下载的文件,并打开目录,修改gpio.py文件
保存并安装gpio库
sudo python setup.py install
2、连接超声波模块和pi
3、测试代码
#!/usr/bin/python
# -*- coding:utf-8 -*-
'''
HC-SR04 NanoPI NEO2 Pi
VCC <-> 5V(Pin4)
GND <-> GND(Pin6)
TRIG <-> GPIOG7
ECHO <-> GPIOG6
'''
'''
测距时,被测物体的面积不少于0.5平方米且平面尽量要求平整,否则会影响测量结果。
测距原理:
1.外部给模块TRIG引脚提供一个10us以上脉冲触发信号;
2.模块内部将发出8个40KHz周期电平并检测回波;
3.模块一旦检测到有回波信号则输出回响信号,回波信号的脉冲宽度与所测的距离成正比。脉冲持续的时间就是超声波从发射到返回的时间。
测试距离 = 高电平持续的时间 * 声速 / 2
'''
import gpio as GPIO
import time
# BCM GPIO编号
TRIG = 199
ECHO = 198
def checkdist():
GPIO.output(TRIG, True)
time.sleep(0.000015)
GPIO.output(TRIG, False)
while not GPIO.input(ECHO):
pass
t1 = time.time()
while GPIO.input(ECHO):
pass
t2 = time.time()
return (t2 - t1) * 340 / 2
def setup():
#采用BCM编号
GPIO.setup(TRIG, GPIO.OUT, initial=False)
GPIO.setup(ECHO, GPIO.IN)
time.sleep(2)
if __name__ == '__main__':
setup();
print 'init done!'
try:
while True:
print 'Distance: %0.2f m' %checkdist()
time.sleep(0.5)
except KeyboardInterrupt:
GPIO.cleanup()
4、运行结果