目录
1602液晶显示器
单片机和测试模块接线
//添加1602液晶屏库文件
#include <LiquidCrystal.h>
/*=======液晶屏引脚和单片机接线说明说明=======
* 液晶屏 单片机 说明
* VSS 0V 电源地
* VDD 5V 电源5V
* V0 0V 对比度调整,0V最清晰
* RS 12 数据命令选择。高电平时选择数据寄存器,低电平时选择指令寄存器。
* RW 0V 液晶屏读写操作选择,0V表示只写操作。
* E 11 使能信号。由高电平变为低电平时执行命令
* D0 D0-D7:8位双向数据线
* D1
* D2
* D3
* D4 5
* D5 4
* D6 3
* D7 2
* A LCD背光电源正极,可选,可以直接接3.3V或接5V添加10KΩ电阻
* K LCD背光电源负极,可选.
*/
//定义液晶屏对应的引脚
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup()
{
//设置LCD显示屏2行、16列
lcd.begin(16, 2);
//在LCD显示屏上显示字符串
lcd.print("hello, world!");
}
void loop()
{
//设置光标开始位置第一行、第0列。(第0行是上面的行、第1行是下面的行)
lcd.setCursor(0, 1);
//在1602显示屏下面的一行,显示秒计数
lcd.print(millis() / 1000);
}
超声波HC-SR04
超声波模块接线
15厘米测距
10厘米测距
串口显示超声波距离
//添加1602液晶屏库文件
#include <LiquidCrystal.h>
const long _1000msTime = 1000; // 1000 milli seconds
unsigned long _1000msLastTime;
const long _100msTime = 100; // 100 milli seconds
unsigned long _100msLastTime;
const long _10msTime = 10; // 10 milli seconds
unsigned long _10msLastTime;
/*=======液晶屏引脚和单片机接线说明说明=======
* 液晶屏 单片机 说明
* VSS 0V 电源地
* VDD 5V 电源5V
* V0 0V 对比度调整,0V最清晰
* RS 12 数据命令选择。高电平时选择数据寄存器,低电平时选择指令寄存器。
* RW 0V 液晶屏读写操作选择,0V表示只写操作。
* E 11 使能信号。由高电平变为低电平时执行命令
* D0 D0-D7:8位双向数据线
* D1
* D2
* D3
* D4 5
* D5 4
* D6 3
* D7 2
* A LCD背光电源正极,可选,可以直接接3.3V或接5V添加10KΩ电阻
* K LCD背光电源负极,可选.
*/
//定义液晶屏对应的引脚
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
/*========超声波引脚说明=============
*
*
*
*/
const int EchoPin = 8; //超声波信号输入
const int TrigPin = 9; //超声波控制信号输出
int currDistance = 0; // 距离
//测量距离 单位厘米
long MeasuringDistance()
{
long duration;
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH); //输出高电平,延时10ms
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
duration = pulseIn(EchoPin, HIGH); //接受返回信号
return duration /58; //计算距离
}
void setup()
{
//设置LCD显示屏2行、16列
lcd.begin(16, 2);
lcd.clear();
//在LCD显示屏上显示字符串
lcd.print("Distance is cm");
//超声波
pinMode(EchoPin, INPUT); //声明各引脚模式
pinMode(TrigPin, OUTPUT);
//串口
Serial.begin(9600);
}
void loop()
{
currDistance = MeasuringDistance(); //读取前端距离
TimeProc();
}
void TimeProc()
{
//1000ms执行一次
if ((millis() - _1000msLastTime) >= _1000msTime)
{
_1000msLastTime = millis( );
//
Serial.print("Distance is: ");
Serial.print(currDistance);
Serial.println(" cm;");
}
//100ms执行一次
if ((millis() - _100msLastTime) >= _100msTime)
{
_100msLastTime = millis( );
//设置光标开始位置第一行、第0列。(第0行是上面的行、第1行是下面的行)
lcd.setCursor(0, 1);
//在1602显示屏下面的一行,显示秒计数
//lcd.print(millis() / 1000);
lcd.print(currDistance);
lcd.print(" ");
}
//10ms执行一次
if ((millis() - _10msLastTime) >= _10msTime)
{
_10msLastTime = millis( );
//
}
}