超声波传感器是一种常用的测距传感器, 它利用超声波的传播特性进行距离测量. 它通常由超声波发射器和接收器组成.
超声波传感器的工作原理是: 首先, 超声波发射器发送一个超声波脉冲信号, 该脉冲信号在空气中传播. 当这个脉冲波遇到物体时, 会被物体表面反射回传感器, 并被接收器接收到. 接收器会将接收到的回波转化为电信号, 并通过处理电路进行处理.
通过测量发射超声波和接收回波之间的时间差, 可以计算出超声波传感器到物体的距离. 根据声速 (通常在空气中为约 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 : )