HC-SR04在小车的各个零件中超声波测距模块在我个人看来功能最神奇,但运行起来也比较复杂。
HC-SR04共有四个接线脚:VCC,GND,trig,echo。其中,VCC接5V电源,GND接地,trig为控制端,echo为接收端。
VCC和GND给传感器供电。传感器工作时,通过程序控制trig引脚。即给该引脚一个不小于十微秒的高电平,这时超声波模块会自动发出8个40KHz的方波。模块发出方波后echo引脚会自动置高电平直到接收到信号。所以只要源源不断给trig引脚间断且高于十微秒的高电平(程序控制)就可以实时测试距离。
程序实现:
#define Trig 2 //引脚Tring 连接 IO D2
#define Echo 3 //引脚Echo 连接 IO D3
float cm; //距离变量
float temp;
void setup()
{
Serial.begin(9600);
pinMode(Trig,OUTPUT);
pinMode(Echo,INPUT);
}
void loop()
{
int distance;
digitalWrite(Trig,LOW);//先给一段短的低脉冲以确保我们得到干净的高脉冲
delayMicroseconds(2);
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
distance=pulseIn(Echo,HIGH);//读取从发出方波到接收回波的时间间隔
cm = (duration/2) / 29.1;//根据声速343米每秒计算得出传感器与障碍物之间的距离
//print是输出你要的内容横排显示
//println是输出要显示的内容后自动换行
Serio.print("cm");
Serio.println(cm);
}
如果HC-SR04没有收到回波,则输出永远不会变低。 如果使用上面的Pulsin然后没有返回echo,程序将挂起1秒,这是Pulsin的默认超时。需要使用timeout参数。HC-SR04测量范围几乎不到10英尺,总路径长度为20英尺,路径时间约为20毫秒,因此将超时设置为大于25英尺或30毫秒的时间。
Pulsin函数说明