超声波模块使用比较简单,不需要额外的库文件,接线对针脚也没有特殊要求。
主要要点就是脉冲发送方式和距离计算方式。
接线如图:
知识要点:
pulseIn():用于检测引脚输出的高低电平的脉冲宽度。
pulseIn(pin, value)
pulseIn(pin, value, timeout)
Pin—需要读取脉冲的引脚
Value—需要读取的脉冲类型,HIGH或LOW
Timeout—超时时间,单位微秒,数据类型为无符号长整型。
代码如下:
// 设定连接的Arduino引脚,随便接两个IO口即可,这里用2和3口进行测试。
const int TrigPin = 2;
const int EchoPin = 3;
float distance; //距离用浮点数,根据计算公式,可以精确到0.01厘米
void setup()
{ // 初始化串口通信及连接SR04的引脚
Serial.begin(9600);
// 用TrigPin口发送脉冲信号。
pinMode(TrigPin, OUTPUT);
// 用EchoPin口检测脉冲高电平持续的时间。
pinMode(EchoPin, INPUT);
}
void loop()
{
// 产生一个10us的高脉冲去触发TrigPin
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
// 检测脉冲宽度,并计算出距离
distance = pulseIn(EchoPin, HIGH) / 58.00;
Serial.print(distance);
Serial.print("cm");
Serial.println();
delay(1000);
}