1.超声波模块介绍
超声波模块测距原理:
1.超声波模块和单片机进行连接。
2.触发信号,给Trig引脚发送一个大于10us的高电平。
3.发送高电平后,模块会循环发送8个40KHZ的脉冲,与此同时Echo引脚会由低电平变成高电平,这时候就需要开启定时器开始计算Echo引脚的高电平时间,
4.模块接收到返回的超声波时,Echo电平会由高电平变成低电平,此时应该关闭定时器,这个时候的算出来的定时器的时间就是Echo持续的高电平,也就是超声波从发射到传回来的总时间。
5.(除去温度的影响)根据声速为340m/s,来计算(高电平时间 * 340m/s) / 2。 计算的时候注意自己使用定时器获得的时间的单位。记得换算。
接口说明:
1.vcc接高电平 例如3.3V或5V
2.gnd接低电平 例如gnd 或0V
3.Trig和Echo接自定义的IO口
函数说明:
delayMicroseconds(us); //微妙延时函数
delayMicroseconds()函数接受单个整数(或数字)参数。此数字表示时间,以微秒为单位。一毫秒内有一千微秒,一秒内有一百万微秒。
目前,可以产生精确延迟的最大值是16383。这可能会在未来的Arduino版本中改变。对于超过几千微秒的延迟,应该使用delay()函数。
int gettimeofday(struct timeval*tv,struct timezone *tz )//用函数gettimeofday()函数来得到时间。它的精度可以达到微妙
gettimeofday()会把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中。
struct timeval 结构体:
/*
17 struct timeval
18 {
19 time_t tv_sec; //Seconds. 秒
20 suseconds_t tv_usec; //Microseconds. 微秒
21 };
22 */
注意:做超声波模块要记得初始化超声波模块
void chaoShengBo()
8 {