HC-SR04超声波模块掌控下应用
本帖最后由 yywudao 于 2019-5-9 16:15 编辑掌控板的编程IDE mPython X最近放出来 0.3.0版本(https://mpythonx.readthedocs.io/zh_CN/latest/mPythonX.html)
这次更新,内置了HC-SR04超声波模块的编程积木块。掌控的固件也相应的更新到了2019-5-5的版本。
昨天也体现下了HC-SR04在掌控下的应用,分享下使用心得。
超声波的使用原理简单说就是 Trig引脚给持续10us的高电平,模块就会发出8个40KHz的超声波信号。一旦模块发出超声波信号,Echo引脚就会产生高电平,直到接接收到遇见障碍物反射回来的超声波,高电平才会变成低电平。通过这个Echo引脚高电平到低电平的持续时间,可以换算出超声波行走的路程,即超声波与障碍物之间的距离:
distance=time×340m/s÷2 (340m/s--超声波在空气中的传播速度,2--往返)
先贴程序:
手头是没有“印堂”(smd贴片晶体)的宽压超声波模块(今天听到的年度梗{:5_153:}),实测无需外接5V电源,VCC可以直接接掌控的3.3V引脚供电,echo引脚也无需接分压电阻,直接连接掌控的数字输入引脚。
此次mPython X 超声波积木还未完全支持所有数字引脚,已反馈,后续会进行完善。对应的编程代码会用到一个名为“hcsr04”的模块,此模块还未内置到掌控的固件中,需要手动下载掌控的hcsr04.py文件到掌控板根目录下,后期也会内置到固件中。
(手动hcsr04.py 代码路径:https://raw.githubusercontent.co ... er/hcsr04/hcsr04.py)
补一个出自台湾赵英杰《超图解Python物联网实作入门》里的超声波传感器的代码,引脚定义做了些许的修改:
# HC-SR04 for mPython
# 原代码出自赵英杰《超图解Python物联网实作入门》
# http://swf.com.tw
# 如引用,请注明原出处--赵英杰
from machine import Pin
import machine
import time
echoTimeout = 23200 # 58*400 = 23200
trigPin = Pin(Pin.P8, mode = Pin.OUT)
echoPin = Pin(Pin.P9, mode = Pin.IN)
trigPin.value(0)
def distance():
trigPin.value(1)
time.sleep_us(10)
trigPin.value(0)
pulseTime = machine.time_pulse_us(echoPin, 1, echoTimeout)
if pulseTime > 0:
return round(pulseTime / 58)
else:
return pulseTime
while True:
cm = distance()
if cm> 0:
print('Distance: ', cm, 'cm')
else:
print('Out of the detection range.')
time.sleep(1) 本帖最后由 rzyzzxw 于 2019-5-9 20:40 编辑
赞哈。{:5_193:}小豪老师有做项目写教程的天赋啊。 rzyzzxw 发表于 2019-5-9 19:56
赞哈。小豪老师有做项目写教程的天赋啊。
分享下学习心得。哈哈 请问为什么我打印出来的只有-1? Nplus实验室 发表于 2019-5-14 14:41
请问为什么我打印出来的只有-1?
你用的是图形模块,还是纯代码?
machine.time_pulse_us(引脚,0/1,等待时间)0/1表示测量的是低电平或高电平。如果脉冲信号没有在等待时间内出现,time_pulse_us()将返回 -2,如果脉冲长度超过等待时间,则返回 -1。
还有一点,你手头的HC-SR04超声波是普通5V的还是支持宽电压版本的?
页:
[1]