穷创客教育之Arduino编程第十九课:超声波雷达
穷创客教育之Arduino编程第十九课:超声波雷达
超声波的原理是先发射一束超声波并且开始计时,等到超声波碰到前方物体就会发生反射,超声波测距传感器在收到回声后会停止计时,通过这个时间结合声音的速度可以判定前方距离。
一、实验现象
通过超声波传感器将前方障碍物的距离显示在串行监视器。
二、实验器材:
开发板、超声波传感器1个、三色LED1个、200Ω电阻3个和杜邦线若干。
三、实验所用函数及语句
要启动测距过程,Arduin板必须要在超声波测距传感器的引脚上发送一个很短的脉冲。然后使用pulseln()函数监听相同引脚上的脉冲宽度。测量到的脉冲宽度就是声音传播的时间了。
delayMicroseconds(2): 等待 2微妙
pulseIn(Echo, HIGH):函数用于读取引脚脉冲的时间长度,脉冲可以是HIGH或LOW。如果是HIGH,函数将先等引脚变为高电平,然后开始计时,一直到变为低电平为止。
四、实验电图
【注意】板上接线方式:VCC、trig(控制端)、echo(接收端)、GND;接线时先接上超声波模块再通电,或先将GND 连接以免将模块烧坏。Circuits中超声波元件只有三个角,将trig和echo合并成一个不影响我们做实验。
五、编写程序
测试距离=(高电平时间*声速(340M/S))/2经过计算后:测试距离=(高电平时间/58)(厘米)。
float temp;
void setup()
{
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop()
{
pinMode(5, OUTPUT);
digitalWrite(5, LOW); //给Trig发送一个低电平
delayMicroseconds(2); //等待 2微妙
digitalWrite(5,HIGH); //给Trig发送一个高电平
delayMicroseconds(10); //等待 10微妙
digitalWrite(5, LOW); //给Trig发送一个低电平
pinMode(5, INPUT);
temp = float(pulseIn(5, HIGH)); //存储回波等待时间,
temp = temp /58;
if(temp<=50){ //红灯
analogWrite(11, 255);
analogWrite(10, 0);
analogWrite(9, 0);
}
if(150>=temp && temp>50){//黄灯
analogWrite(11, 255);
analogWrite(10, 0);
analogWrite(9, 255);
}
if(temp>150){//绿灯
analogWrite(11, 0);
analogWrite(10, 0);
analogWrite(9, 255);
}
delay(10);
}
用真实的模块时,将trig接在5号端口,echo接在6号端口。程序如下:
float temp;
void setup()
{
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, INPUT);
}
void loop()
{
digitalWrite(5, LOW); //给Trig发送一个低电平
delayMicroseconds(2); //等待 2微妙
digitalWrite(5,HIGH); //给Trig发送一个高电平
delayMicroseconds(10); //等待 10微妙
digitalWrite(5, LOW); //给Trig发送一个低电平
temp = float(pulseIn(6, HIGH)); //存储回波等待时间,
temp = temp /58;
if(temp<=50){ //红灯
analogWrite(11, 255);
analogWrite(10, 0);
analogWrite(9, 0);
}
if(150>=temp && temp>50){//黄灯
analogWrite(11, 255);
analogWrite(10, 0);
analogWrite(9, 255);
}
if(temp>150){//绿灯
analogWrite(11, 0);
analogWrite(10, 0);
analogWrite(9, 255);
}
delay(10);
}
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com