超声波传感器是一种常用的测距传感器,它利用超声波的传播特性进行距离测量。它通常由超声波发射器和接收器组成。
超声波传感器的工作原理是:首先,超声波发射器发送一个超声波脉冲信号,该脉冲信号在空气中传播。当这个脉冲波遇到物体时,会被物体表面反射回传感器,并被接收器接收到。接收器会将接收到的回波转化为电信号,并通过处理电路进行处理。
通过测量发射超声波和接收回波之间的时间差,可以计算出超声波传感器到物体的距离。根据声速(通常在空气中为约343米/秒)和时间差,可以使用简单的速度-时间-距离公式(d = v * t)计算出实际距离。
常见的超声波传感器包括HC-SR04、LV-MaxSonar、Ultrasonic Ranging Module等,它们具有不同的特性和性能参数。在选择和使用超声波传感器时,需要根据具体需求和应用场景进行选择,并注意参考传感器的说明文档和资料进行正确的接线和设置。
const int Triger = PA2;
const int Echo = PA1;
unsigned long timeOfFlight(); //function declaration
void setup()
{
Serial.begin(115200);
pinMode(Triger, OUTPUT);
pinMode(Echo, INPUT);
}
void loop()
{
digitalWrite(Triger, LOW);
delay(2);
digitalWrite(Triger, HIGH);
delay(10);
digitalWrite(Triger, LOW);
float distance = (timeOfFlight()*0.0347)/2; //The temperature is 25℃ for the speed of sound.
Serial.print("Distance:");
Serial.print(distance);
Serial.print("cm\n");
delay(100); //Delay 100ms.
}
unsigned long timeOfFlight()
{
unsigned long startTime, endTime;
unsigned long duration;
while (digitalRead(Echo) == LOW); //Wait for the Echo pin to turn high to start timing.
startTime = micros(); //us.
while (digitalRead(Echo) == HIGH); //Wait for the Echo pin to turn low to end timing.
endTime = micros();
duration = endTime - startTime;
return duration; // return value.
}
endTime = micros();
micros()函数返回开发板开始运行当前程序时的微秒数。该数字在大约70分钟后溢出,即回到零。
此函数返回自程序启动后的微秒数(无符号长整型)。
现在,通过单击顶部绿色条右侧的图标或按Ctrl+Shift+M,在Arduino IDE中打开串口监视器观测打印的通过超声波测出的物体距离。
Simple code works reliably. NASA's 10 golden rules for coding can be found on the public internet :)