37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十五:LCD1602液晶显示屏1602A模块 蓝屏黄绿屏灰屏5V 3.3V焊排针 IIC/I2C

在这里插入图片描述
在这里插入图片描述

1602模块电原理图

在这里插入图片描述

IIC/I2C接口LCD1602转接板
控制板IO口只有20个,加些传感器、SD卡啥的,继电器等模块多了,IO口就不够用了,原来的1602屏至少需要7个IO口才能驱动起来,这个模块可以帮你省5个IO口。

参数
1.供电电压:+5V
2.支持I2C协议
3.具有背光灯,和对比度调节电位器
4.4线输出更简单
5.设备地址:0x27

在这里插入图片描述
Arduino实验接线示意图

在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十八: LCD1602A液晶屏5V显示模块(IIC/I2C接口)
项目二十三:使用微波传感器制作Arduino运动探测器
实验接线:D12接蜂鸣器,D13接LED灯
LCD1602A IIC接口A4、A5
微波传感器 Uno
VCC Vcc
GND GND
OUT D2

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验八十八: LCD1602A液晶屏5V显示模块(IIC/I2C接口)
  项目二十三:使用微波传感器制作Arduino运动探测器
  实验接线:D12接蜂鸣器,D13接LED灯
           LCD1602A IIC接口A4、A5
  微波传感器       Uno
  VCC             Vcc
  GND             GND
  OUT             D2
*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// 将LCD地址设置为0x27,以显示16个字符和2行
LiquidCrystal_I2C lcd(0x27, 16, 2);
int Sensor = 2;   // D2接微波传感器
int LED = 13;     // D13接LED灯
int Buzzer = 12; // D12接蜂鸣器
int flg = 0;  // 变更检测标志

void setup()
{
  Serial.begin(9600);
  lcd.init(); //初始化LCD
  lcd.clear();  // 清除LED屏幕
  lcd.print("...MAKER.PRO...");
  delay(2000);

  lcd.backlight(); //打开背光
  pinMode (Sensor, INPUT);  // 将微波雷达引脚定义为输入
  pinMode (Buzzer, OUTPUT);    // 定义蜂鸣器为输出
  pinMode (LED, OUTPUT);    // 定义LED为输出
  Serial.println("Waiting for motion");// 准备就绪
}

void loop()
{
  int val = digitalRead(Sensor); //赋值微波感应信号给变量
  if ((val > 0) && (flg == 0))// 检测到运动信号
  {
    digitalWrite(LED, HIGH);
    digitalWrite(Buzzer, HIGH);
    lcd.clear();
    Serial.println("Motion Detected");
    lcd.print("Motion Detected");
    flg = 1;
  }

  if (val == 0) // 没有检测到运动
  {
    digitalWrite(LED, LOW);
    digitalWrite(Buzzer, LOW);
    lcd.clear(); // 清除LED屏幕
    Serial.println("NO Motion");
    lcd.print("NO Motion ");
    flg = 0;
  }
  delay(100);
}

Arduino实验场景图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实验开源仿真编程(Linkboy V5.33)

在这里插入图片描述

测试Arduino 4×4 薄膜键盘和 LCD 显示屏

在这里插入图片描述

Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序五:测试Arduino 4×4 薄膜键盘和 LCD 显示屏
  Arduino------LCD1602
  5V-------------VCC
  GND-----------GND
  A4-----------SDA IIC 数据线
  A5-----------SCL IIC 时钟线
*/

#include <Keypad.h>//加载键盘驱动库
#include <LiquidCrystal_I2C.h>//加载1602显示屏驱动库
LiquidCrystal_I2C lcd(0x27, 16, 2);
const byte ROWS = 4;
const byte COLS = 4;

char keys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};//建立二维数组,用于设置按键的输出字符

//连接到键盘的行列引脚
const byte colPins[4] = {8, 7, 6, 5};     // 设定「行」脚位
const byte rowPins[4] = {12, 11, 10, 9}; // 设定「列」脚位
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );//实例化Keypad 对象

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
}

void loop() {
  char key = keypad.getKey();
  if (key) {
    lcd.print(key); //在LCD上显示按键值
  }
}

实验结果(显示薄膜矩阵键盘模块的输入键值)

在这里插入图片描述

实验场景图

在这里插入图片描述
IIC LCD1602A液晶屏显示模块的实验环境
一、IIC LCD1602A液晶屏显示模块实验所需硬件清单
DS1302时钟模块X1
Arduino Uno开发板 X1
杜邦线 若干(备了9条)
HC-RS04超声波测距模块X1
DHT11数字温湿度传感器模块X1
IIC LCD1602A液晶屏显示模块X1
Proto Shield 原型扩展板(带mini面包板)X1

在这里插入图片描述
传感器模块实验所需软件平台
代码编程 Arduino IDE (版本1.8.19)
仿真编程 Linkboy (版本V4.6.3)
图形编程 Mind+ (版本 V1.7.0 RC2.0)
以及编玩边学(线上平台https://ide.codepku.com/?type=Arduino)
三、搜索和安装“LiquidCrystal_I2C”库
1、打开Arduino IDE——工具——管理库,搜索LiquidCrystal_I2C

在这里插入图片描述

2、打开网页https://github.com/,搜索LiquidCrystal_I2C

在这里插入图片描述
实验接线示意图

在这里插入图片描述

在这里插入图片描述

程序一:I2C 扫描仪
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序一:I2C 扫描仪
  这里查询结果是“0x27”(这个地址不对的话,实测无法烧录程序)
  Arduino------LCD1602
  5V-------------VCC
  GND-----------GND
  A4-----------SDA IIC 数据线
  A5-----------SCL  IIC 时钟线
*/

#include <Wire.h>

void setup() {
  Wire.begin();//等待串口监视器
  Serial.begin(9600);
  Serial.println("\n I2C 扫描仪");
}

void loop() {
  byte error, address;
  int nDevices;
  Serial.println("eagler8 正在扫描......");
  nDevices = 0;
  for (address = 1; address < 127; address++ ) {
    // i2c_scanner 使用的返回值
    // Write.endTransmission 看是否
    // 设备确实确认了地址。
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C 设备在地址 0x");
      if (address < 16)
        Serial.print("0");
      Serial.print(address, HEX);
      Serial.println(" !");
      nDevices++;
    } else if (error == 4) {
      Serial.print("地址 0x 出现未知错误");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("没有找到 I2C 设备\n");
  else
    Serial.println("完成\n");
  delay(5000);
}

(2)实验串口返回情况

在这里插入图片描述

程序二:显示字符“Welcome to eagler8”
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序二:显示字符“Welcome to eagler8”
  实验接线
  Arduino------LCD1602
  5V-------------VCC
  GND-----------GND
  A4-----------SDA IIC 数据线
  A5-----------SCL  IIC 时钟线
*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>//导入1602驱动库
// 将 LCD 地址设置为 0x27 以实现 16 个字符和 2 行显示
LiquidCrystal_I2C lcd(0x27, 16, 2);

void MyPrintLCD(String MyString){
  for (int i = 0; i < MyString.length(); i++)
    lcd.write(MyString.charAt(i));//写入字符串字符
}

void setup() {
  lcd.init();//初始化液晶屏
  lcd.backlight();
  MyPrintLCD("Welcome to ");
  lcd.setCursor(0, 1);//写入定位
  MyPrintLCD("         eagler8");
}

void loop() {
}

(2)实验场景图

在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐