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】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
#include
// 将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实验场景图
测试Arduino 4×4 薄膜键盘和 LCD 显示屏
Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序五:测试Arduino 4×4 薄膜键盘和 LCD 显示屏
Arduino------LCD1602
5V-------------VCC
GND-----------GND
A4-----------SDA IIC 数据线
A5-----------SCL IIC 时钟线
*/
#include //加载键盘驱动库
#include //加载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
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
#include //导入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)实验场景图