Arduino实现超声波测距+LCD液晶屏实时显示
计科在我们学校是完全偏软的。实在是闲的无聊,在家搞起了硬件。好玩呐!!!
***********************************************************************************************************************************************
1、描述
利用HC-SR04超声波测距模块,基于Arduino实现测量距离,并将结果显示在LCD1602液晶显示屏上。
2、所用食材
一个HC-SR04模块、Arduino开发板、面包板、电阻及导线若干。
3、电路图
有一点需要注意一下,图中的电阻最好选用阻值在3k附近的电阻,这样会有更好的清晰度。当然如果接一个可变电阻上会更好,这样可以手动调节。
4、实物图
5、代码
#include <LiquidCrystal.h>
#define LM35 A0
#define Trig 8 //引脚Tring 连接 IO D8
#define Echo 9 //引脚Echo 连接 IO D9
float cm; //距离变量
LiquidCrystal lcd(12,11,5,4,3,2); //构造一个LiquidCrystal的类成员。使用数字IO ,12,11,5,4,3,2
int val = 0; //存放AD变量值
float temp = 0; //存放温度值的10倍
void setup()
{
lcd.begin(16,2); //初始化LCD1602
lcd.print("Welcome to use!"); //液晶显示Welcome to use!
delay(1000); //延时1000ms
lcd.clear(); //液晶清屏
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
}
void loop()
{
//给Trig发送一个低高低的短时间脉冲,触发测距
digitalWrite(Trig, LOW); //给Trig发送一个低电平
delayMicroseconds(2); //等待 2微妙
digitalWrite(Trig,HIGH); //给Trig发送一个高电平
delayMicroseconds(10); //等待 10微妙
digitalWrite(Trig, LOW); //给Trig发送一个低电平
temp = float(pulseIn(Echo, HIGH)); //存储回波等待时间,
//pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW并停止计时
//返回脉冲的长度
//声速是:340m/1s 换算成 34000cm / 1000000μs => 34 / 1000
//因为发送到接收,实际是相同距离走了2回,所以要除以2
//距离(厘米) = (回波时间 * (34 / 1000)) / 2
//简化后的计算公式为 (回波时间 * 17)/ 1000
cm = (temp * 17 )/1000; //把回波时间换算成cm
lcd.setCursor(0,0); //设置液晶开始显示的指针位置
lcd.print("Now Distance:"); //液晶显示“LM35 temp =”
lcd.setCursor(0,1); //设置液晶开始显示的指针位置,在下一行显示
lcd.print(cm); //液晶显示距离
delay(1000); //延时1000ms
}
*******************
***********************************************************************************************************************************************
写在最后
希望对屏幕前的您有帮助。如果您有任何的疑问,欢迎在下方留言或者私信我,第一时间将会对您的疑问做出回应。
生命不息,折腾不止!学习之路的孤单你我共知。本人目前是大二一名普通学生,如果您愿意的话,能进一步交流可谓好之又好!