一、 实验目的
(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
在这里插入图片描述

导入需要的两个库文件
在这里插入图片描述
在这里插入图片描述

程序编译
在这里插入图片描述

程序上传
在这里插入图片描述

更多推荐