本文转载自:http://www.stduino.com/forum.php?mod=viewthread&tid=24&extra=
关键词:
51、stm32、arduino、stduino、单片机、stduino UNO&Nano、超声波传感器模块
超声波测距原理简析:
超声波传感器能够发射超声波并接收反射回的超声波信号。利用发射与接收的时间差以及传播速度(即声速,声音在空气中传播的速度约为340m/s)即可计算传感器到障碍物体的距离。单片机向超声波传感器发送脉冲,超声波传感器被此脉冲触发后会产生一个40 kHz的脉冲电信号,通过激励换能器处理以后,转换成机械振动,频率约在20 kHz以上,由此形成了超声波。
该信号经锥形“辐射口”处将超声波信号发射出去。接收器接收到反射回来的超声波信号后,将超声波变成微弱的电振荡,并将信号进行放大,就可得到所需的脉冲信号,此脉冲信号再返回给单片机。
实验目的:
利用HC-SR04超声波传感器测量到目标物体的距离,并利用串口通信窗口显示。
具体而言,在模块trig端输出一个至少10us的高电平信号,则该模块内部将循环发射8个40KHz频率的脉冲;若检测由回波信号,则会在echo端产生高电平信号。
器材:
Stduino Uno/Nano、超声波传感器HC-SR04、杜邦线4根
int trig = 8;//Trig端
int echo = 9;//Echo端
void setup()
{
// put your setup code here, to run once:
pinMode(echo,INPUT);
pinMode(trig,OUTPUT);
Serial.begin(9600);
}
void loop()
{
// put your main code here, to run repeatedly:
unsigned long time = 0;
while(1){
digitalWrite(trig,HIGH);
delayMicroseconds(15);//需要大于10
digitalWrite(trig,LOW);
time = pulseIn(echo,HIGH);//高电平传回超声波从发射到接收所经过的时间。
float S = time/58.00; //使用浮点计算出距离,单位为cm,time除以58是由速度乘以时间换算而来
Serial.println(S);
S = 0;
time = 0;
delay(500);
}
}