LCD Keypad Shield
LCD Keypad Shield

概述

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、舵机驱动等模块,延伸设计出属于自己的作品。

**注意:**在双排阻旁的标识中,标识在前对应的是上排组,标识在后对应的是下排阻。如下图所示
DFR0374引脚说明
DFR0374引脚说明

DFR0374引脚说明

在本设计中有5个按键都是连接到A0引脚上的,他们的读取值和按下的按钮对应关系如下表。如果同时按下多个按钮,那么就会读取所有按下按钮中A0读取值最小的一个。

DFR0374引脚说明

由于模拟信号易受干扰,测量的读取值不一定与上表完全相同,±10的误差属于正常情况。

使用教程

下面我们来做一个简单的样例,来教大家如何使用1602 RGB LCD显示器扩展板。

准备

首先准备好下面的硬件及安装好软件

样例代码

硬件连接部分弄完了以后,我们就来看看软件部分怎么弄吧。

首先你需要下载下面链接的库文件及一些参考资料。将这个文件夹解压后复制出来放到我们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,有按键按下时输出对应按键

相关资料

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!

shopping_car.png DFRobot商城购买链接 |}