micropython for esp8266 下的HC-SR04超声波测距

代码如下:

from machine import Pin
import time
# HC-SR04超声波模块测距原理是:给模块1个最少10us的高电平,模块接受到高电平后开始发射840KHz的声波,
# echo脚会由0变为1,MCU开始计时,当超声波模块接收到返回的声波时,echo由1变为0,MCU停止计时,
# 这时间差就是测距总时间,在乘声音的传播速度340/秒,除2就是距离。

#定义IO口模式,以及初始状态
trig = Pin(4,Pin.OUT)
echo = Pin(0, Pin.IN)
trig.off()
echo.off()
#构建函数
def fasong():
  #触发HC-SR04超声波模块测距
  trig.on()
  time.sleep_us(10)
  trig.off()
  #检测回响信号,为低时,测距完成
  while(echo.value() == 0):
    pass
  #开始不断递增的微秒计数器 1 
    t1 = time.ticks_us()
  #检测回响信号,为高时,测距开始
  while(echo.value() == 1):
    pass
  #开始不断递增的微秒计数器 2 
    t2 = time.ticks_us()
  #计算两次调用 ticks_ms(), ticks_us(),ticks_cpu()之间的时间,这里是ticks_us()
  t3 = time.ticks_diff(t2,t1)/10000
  #返回一个值给调用方,不带表达式的return相当于返回 None。
  #这里返回的是:开始测距的时间减测距完成的时间*声音的速度/2(来回)
  return t3*340/2
#try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理  
try:
  while 1:
    print("JuLiWei:%0.2f cm" %fasong())
    time.sleep(1)
except KeyboardInterrupt:
  pass 

原文地址:http://bbs.eeworld.com.cn/thread-579690-1-1.html

发布了27 篇原创文章 · 获赞 19 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/oXingChenWuJi/article/details/85109379