概述
LCD显示屏对于大家来说并不陌生,它衍生的LCD显示器扩展板也越来越常见,那可以数据监测的LCD显示器扩展板呢?1602 RGB LCD就是这样一个极具特点的显示器扩展板,它将带来全新的视觉体验。
1602 RGB LCD是一款提供2行16字符RGB液晶显示的Arduino扩展板,它的特点有:
**RGB LCD:**1602 RGB LCD显示器扩展板有彩色字和彩色底两款可选,不仅亮度可调,而且颜色也可调,能够提供1600万种颜色组合,摆脱了单色,在视觉上有一种全新的体验。可根据被测物体的变化程度自行调整颜色,从而更直观的感受被监测物体的实时变化。(例:检测室内温度时,当温度≤26℃时,颜色为蓝色;当温度>26℃时,颜色为红色)
**I/O口扩展:**Arduino控制器的控制端口数量有限,在端口不够用的情况下,这款RGB LCD扩展板便可以帮您解决这个大问题。1602 RGB LCD显示器扩展板背面扩展了I/O接口,在实现自身显示功能的情况下,还可以利用传感器、LED、舵机等模块进行组合,设计出极具特点的作品,实现了一板两用。
**按键扩展:**1602 RGB LCD显示器扩展板扩展了多个按键输入。有5个按键可以程序自定义,可用于显示切换、功能设置使用。
**I2C通讯:**Arduino初学者们总是会为繁琐复杂的液晶驱动电路连线而头疼。我们将1602 RGB LCD屏与扩展底板做了集成化设计,并采用I2C通讯方式,可直接将此板插到Arduino控制器上使用,调用Arduino自带的库,简单的几行代码便可以完成数据和字符的显示功能。
**用途:**1602 RGB LCD显示器扩展板不仅可以用作各种互动作品、项目的显示,还可以搭建数据监控和小型操作平台,作为各种反馈的显示。
产品参数
- 工作电压:5.0V
- 工作电流:<60mA
- 显示描述:16*2
- 通讯方式:I2C
- 工作温度:-20 to+ 70℃
- 存储温度:-30 to+ 80℃
引脚说明
1602 RGB LCD显示器扩展板设置有双排模拟/数字口,该产品可以做为一个基础模块,根据自身的实际需求,结合传感器、LED、舵机驱动等模块,延伸设计出属于自己的作品。
**注意:**在双排阻旁的标识中,标识在前对应的是上排组,标识在后对应的是下排阻。如下图所示
在本设计中有5个按键都是连接到A0引脚上的,他们的读取值和按下的按钮对应关系如下表。如果同时按下多个按钮,那么就会读取所有按下按钮中A0读取值最小的一个。
由于模拟信号易受干扰,测量的读取值不一定与上表完全相同,±10的误差属于正常情况。
使用教程
下面我们来做一个简单的样例,来教大家如何使用1602 RGB LCD显示器扩展板。
准备
首先准备好下面的硬件及安装好软件
- 硬件
- DF_UNO x1
- 1602 RGB LCD显示器扩展板 x1
- 软件
- Arduino IDE 点击下载Arduino IDE
样例代码
硬件连接部分弄完了以后,我们就来看看软件部分怎么弄吧。
首先你需要下载下面链接的库文件及一些参考资料。将这个文件夹解压后复制出来放到我们ARDUINO安装目录下的libraries文件夹中就可以了。
下载库
具体的安装库文件方法可以参考下面的链接
接下来我们就需要打开ARDUINO IDE了,将我们的下面的代码复制到IDE中,注意:将刚刚打开的IDE中的所有内容都删除掉!然后选好串口和板型(UNO),点击下载就OK了。
/*!
* @file Button.ino
* @brief Button.
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @maintainer DFRobot
* @version V1.0
* @date 2023-07-03
* @url https://github.com/DFRobot/DFRobot_RGBLCD1602
*/
#include "DFRobot_RGBLCD1602.h"
/*
Change the RGBaddr value based on the hardware version
-----------------------------------------
Moudule | Version| RGBAddr|
-----------------------------------------
LCD1602 Module | V1.0 | 0x60 |
-----------------------------------------
LCD1602 Module | V1.1 | 0x6B |
-----------------------------------------
LCD1602 RGB Module | V1.0 | 0x60 |
-----------------------------------------
LCD1602 RGB Module | V2.0 | 0x2D |
-----------------------------------------
*/
DFRobot_RGBLCD1602 lcd(/*RGBAddr*/0x60 ,/*lcdCols*/16,/*lcdRows*/2); //16 characters and 2 lines of show
// Define keys
int lcdKey = 0;
int adcKeyIN = 0;
int r=255; //设置红色亮度 (亮度取值范围为0-255)
int g=255; //设置绿色亮度
int b=0; //设置蓝色亮度
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
void setup()
{
Serial.begin(9600);
lcd.init();
lcd.setRGB(r,g,b); //设置RGB
}
int readLcdButtons() //判断按下的是哪个按键
{
adcKeyIN = analogRead(0); // 0 read the ADC from analog values
// By setting different threshold, you can read the corresponding to the appropriate buttons
if (adcKeyIN > 1000) return btnNONE;
if (adcKeyIN < 50) return btnRIGHT;
if (adcKeyIN < 250) return btnUP;
if (adcKeyIN < 450) return btnDOWN;
if (adcKeyIN < 650) return btnLEFT;
if (adcKeyIN < 850) return btnSELECT;
return btnNONE;
}
void loop()
{
lcd.setCursor(9,1); //设置显示屏输出位置
lcd.print(millis()/1000); //输出时间(秒)
lcd.setRGB(r,g,b); //设置RGB
lcd.setCursor(0,1);
lcdKey = readLcdButtons(); // 读取按键内容
switch (lcdKey) // 根据按下的按键选择输出内容
{
case btnRIGHT:
{
lcd.print("RIGHT ");
break;
}
case btnLEFT:
{
lcd.print("LEFT ");
break;
}
case btnUP:
{
lcd.print("UP ");
break;
}
case btnDOWN:
{
lcd.print("DOWN ");
break;
}
case btnSELECT:
{
lcd.print("SELECT");
break;
}
case btnNONE:
{
lcd.print("NONE ");
break;
}
}
}
显示效果:
背光为黄色,屏幕显示内容无按键按下时输出NONE,有按键按下时输出对应按键
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!