实验现象
在串口监视器实时显示超声波模块所测距离。
理论学习
超声波模块控制口发一个 10US 以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。
实验准备
arduino主板-1
面包板-1
数据线-1
超声波模块-1
跳线若干
连接电路
引脚说明
接线说明
超声波模块 | Arduino主板 |
---|---|
Trig | 11 |
Echo | 12 |
VCC | 5V |
GND | GND |
实物连接
实验代码
// 设定SR04连接的Arduino引脚
const int TrigPin = 11;
const int EchoPin = 12;
unsigned long distance;
void setup()
{ // 初始化串口通信及连接SR04的引脚
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
// 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
pinMode(EchoPin, INPUT);
Serial.println("Ultrasonic sensor:");
}
void loop()
{
// 产生一个10us的高脉冲去触发TrigPin
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
// 检测脉冲宽度,并计算出距离
//delayMicroseconds(2);
distance = pulseIn(EchoPin, HIGH) / 58.00;
Serial.print(distance);
Serial.print("cm");
Serial.println();
delay(1000);
}
实现效果