arduino+HC-SR04+红外接收+LCD1602+led控制 实验报告
·
一、 实验目的
(1)理解硬件串口的使用及相关函数
(2)实现类库的编写,并实现超声波传感器的测距功能,可以考虑当距离达到阈值时,点亮LED灯
(3)熟悉硬件串口的使用方法,实现read、peek、print、write等函数功能
(4)实现串口通讯,用RGB LED进行多色彩的变换
二、 实验环境
Arduino IDE 1.8.13

实验画图软件 fritzing 0.8.7

三.实验过程(主要步骤和结果)
接线部分
总连线图:

超声波部分接线:
Trig>>7
Echo>>6

红外接收模块连线

Lcd1602部分连线(lcd1602第一行可以显示超声波模块测得的距离,单位厘米,电位器可以控制lcd1602分辨率)


Led灯部分连线(蓝色灯由遥控控制,黄色灯由超声波感应距离控制,距离小于3cm灯亮,距离大于3cm灯灭)

程序部分
完整程序代码:
//引入依赖
#include <LiquidCrystal.h>//lcd显示屏依赖库文件
#include <IRremote.h>//红外线接收模块依赖库文件
// 初始化针脚
const int rs = 3, en = 4, d4 = 10, d5 = 11, d6 = 12,d7 = 13;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
//红外线接收模块定义
int PIN_RECV = 9;
int LED_PIN = 5;//红色小灯
IRrecv irrecv(PIN_RECV);
decode_results results;
int led=0;
// 设定SR04连接的Arduino引脚
const int TrigPin = 7;
const int EchoPin = 6;
const int LedPin = 2;//蓝色小灯
float distance;
void setup() // 初始化
{
//设置LCD要显示的列数、行数,即2行16列
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(LedPin, OUTPUT);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT); // 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
Serial.println("Ultrasonic sensor:");
//设置红外接收参数
irrecv.enableIRIn();
pinMode(LED_PIN,OUTPUT);
}
void chaoshengbo()//超声波距离检测函数
{
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10); //产生一个10us的高脉冲去触发SR04
digitalWrite(TrigPin, LOW);
// 检测脉冲宽度,并计算出距离
distance = pulseIn(EchoPin,HIGH);
Serial.print(distance);
Serial.print("ms");
distance = distance/58;
distance = (int(distance*100.0))/100.0; //保留两位小数
Serial.print(".....distance is:");
Serial.print(distance);
Serial.print("cm");
Serial.println();
delay(1000);
}
void lcdprint()//lcd显示函数
{//设置光标定位到第0列,第1行(从0开始)
lcd.setCursor(0,1);
lcd.print(distance);
lcd.setCursor(0,10);
lcd.print("cm");
}
void ledrun()//超声波控制led函数
{
if(distance<3)
digitalWrite(LedPin, HIGH);
if(distance>3)
digitalWrite(LedPin, LOW);
}
void hongwai()//红外遥控控制led函数
{
if (irrecv.decode(&results))//设置红外接收到信号就执行灯泡状态改变
{
Serial.println(results.value);
irrecv.resume();
if(led>0)
{
digitalWrite(LED_PIN,HIGH);
}
else
{
digitalWrite(LED_PIN,LOW);
}
led=(-1)*led;//led变量改变符号
}
}
void loop()
{
chaoshengbo();//超声波距离检测函数
lcdprint();//lcd显示函数
ledrun();//超声波控制led函数
hongwai();//红外遥控控制led函数
}
操作部分
下载Arduino ide 并成功安装
选择开发板为Arduino uno

导入需要的两个库文件


程序编译

程序上传

更多推荐


所有评论(0)