利用Arduino及配套原件,可以模拟简易的倒车雷达。由于本人水平所限,模型还有许多不尽人意的地方。还请大家多多包涵!
实验器材
-
Arduino UNO
-
面包板
-
红黄绿LED各一个
-
1602 LCD 显示屏
-
有源蜂鸣器
-
超声波传感器
-
导线若干
效果图及视频
Arduino-简易倒车雷达系统
代码
#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int EchoPin = A0;
int TrigPin = A1;
int BeepPin = 10;
int GreenPin = 9;
int YellowPin = 7;
int RedPin =5;//各个元件的接线位置int val=0;
int distance=0;
void setup()
{pinMode(EchoPin, INPUT);//读入数据的管脚pinMode(TrigPin, OUTPUT);pinMode(BeepPin, OUTPUT);pinMode(GreenPin, OUTPUT);pinMode(YellowPin, OUTPUT);pinMode(RedPin, OUTPUT);//初始化各个管脚lcd.init();lcd.backlight();//初始化LCD屏
}void loop()
{digitalWrite(TrigPin, LOW);delayMicroseconds(10);digitalWrite(TrigPin, HIGH);// 维持10毫秒高电平用来产生一个脉冲val=pulseIn(EchoPin,HIGH);// 读取数值,此处的val为超声波从发出到接受所需的时间(微秒)distance=val/58;
//关于距离转化的说明:空气中声速为340m/s,计算可得声波传播1cm再反射回去被接受需要大约58微秒
//由此建立distance与val的关系lcd.print("distance:(cm)");lcd.setCursor(0,1);lcd.print(distance);if(distance>15)//>15cm,亮绿灯,蜂鸣器不工作{green();}else if(distance>5)//5~15cm,亮黄灯,蜂鸣器间歇工作{yellow();}else//<=5cm,亮红灯,蜂鸣器持续工作,LCD显示警告信息{red();lcd.setCursor(8,1);lcd.print("WARNING!");}delay(500);lcd.clear();
}void green()
{digitalWrite(YellowPin,HIGH);digitalWrite(RedPin,HIGH);digitalWrite(GreenPin,LOW);beep0();
}void yellow()
{digitalWrite(RedPin,HIGH);digitalWrite(GreenPin,HIGH);digitalWrite(YellowPin,LOW);beep1();
}void red()
{digitalWrite(YellowPin,HIGH);digitalWrite(GreenPin,HIGH);digitalWrite(RedPin,LOW);beep2();
}void beep0()
{digitalWrite(BeepPin,LOW);
}void beep1()
{digitalWrite(BeepPin,HIGH);delay(100);digitalWrite(BeepPin,LOW);delay(100);
}void beep2()
{digitalWrite(BeepPin,HIGH);
}
多谢大家支持!