极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3581|回复: 0

测试1602 IIC/I2C RGB 全彩背光屏

[复制链接]
发表于 2023-4-13 17:52:00 | 显示全部楼层 |阅读模式
4条线的串口屏一直是调试偷懒利器。
偶然发现有串口全彩背光的1602液晶屏,十几块钱一块,也不贵,去年买了2块。本打算改装一下太阳能控制器,做个温度、水位的扩展显示屏。无奈厂家给的stm32资料有误,直接上手没调通,直接搁置了一年。



前两天静下心在Github上找的资料,重新整合了一遍。发现驱动电路和普通IIC液晶屏有很大区别,折腾了两天终于调通了。

以后还要打印个外壳,计划用字符显示水温、水位信息。
条图形式显示水位,再通过背光颜色指示水温分档,从而多了一个维度,很直观。空气质量之类也可以这么用。



接线顺序

Arduino Nano                    1602RGB

+5V                                   VCC
GND                                  GND
A4                                     SDA
A5                                     SCL

这个屏功耗很大,在屏幕一侧跳线末端+5V和GND之间加一个电解电容比如1000uF,否则背光工作起来压降很大,电压波动会导致显示异常。

没加电容时,工作时好时坏,判断是软件冲突,为此折腾了一晚上,后来挂示波器才发现是电源问题。

这种屏实际有两个IIC地址:一个是液晶屏的,驱动电路是AiP31068L-1602J,地址0x7c;另一个是RGB的,驱动电路是PCA9633,地址0x60。



示例代码



  1. //////////////////////////////////////////////////
  2. //     SMR1602RGB Demo for Arduino  V1.0        //
  3. //      by DesignDNA thomas  2023.04.13        //
  4. ////////////////////////////////////////////////

  5. #include "Arduino.h"
  6. #include "LiquidCrystalWired.h"
  7. #include "PCA9633.h"
  8. #define LCD_ADDRESS (0x7c >> 1)
  9. #define RGB_ADDRESS (0xc0 >> 1)
  10. #define ROW_COUNT   2
  11. #define COL_COUNT   16
  12. LiquidCrystalWired lcd = LiquidCrystalWired(ROW_COUNT, COL_COUNT, FONT_SIZE_5x8, BITMODE_8_BIT);
  13. PCA9633 pca9633 = PCA9633(REG_PWM2, REG_PWM1, REG_PWM0);

  14. void setup() {
  15.   pca9633.begin(RGB_ADDRESS, &Wire);
  16.   pca9633.setLdrStateAll(LDR_STATE_IND_GRP);
  17.   pca9633.setGroupControlMode(GROUP_CONTROL_MODE_DIMMING);
  18.   lcd.begin(LCD_ADDRESS, &Wire);
  19.   lcd.turnOn();
  20. }

  21. void loop() {
  22.   lcd.setProgressBarEnabled(true);
  23.   lcd.setCursorPosition(0, 0);
  24.   lcd.print("Level:");
  25.   /////////////////////////////////////Demo data start/////////////////////////////////////////////////
  26.   for (int WaterT = 100; WaterT > 0; WaterT--) {
  27.     lcd.setCursorPosition(0, 7);
  28.     char string_rep[6];
  29.     sprintf(string_rep, "%d %% ", WaterT);
  30.     lcd.print(string_rep);
  31.     lcd.setProgress(WaterT);
  32.     delay(100);
  33.     /////////////////////////////////////Set RGB Color start//////////////////////////////////////////////////
  34.     if (WaterT > 95) {
  35.       pca9633.setRGB( 255, 0, 0);    //High level alarm
  36.       pca9633.turnOff();
  37.       delay(300);
  38.       pca9633.turnOn();
  39.       delay(500);
  40.     } else if (WaterT > 75) {
  41.       pca9633.setRGB(255, 0, 0);
  42.     } else if (WaterT > 60) {
  43.       pca9633.setRGB(255, 100, 0);
  44.     } else if (WaterT > 42) {
  45.       pca9633.setRGB(255, 255, 0);
  46.     } else if (WaterT > 37) {
  47.       pca9633.setRGB(100, 255, 0);
  48.     } else if (WaterT > 30) {
  49.       pca9633.setRGB(0, 255, 0);
  50.     } else if (WaterT > 5) {
  51.       pca9633.setRGB(0,  0, 255);
  52.     } else {
  53.       pca9633.setRGB(0, 0, 255);    //Low level alarm
  54.       pca9633.turnOff();
  55.       delay(300);
  56.       pca9633.turnOn();
  57.       delay(500);
  58.     }
  59.     /////////////////////////////////////Set RGB Color end///////////////////////////////////////////////////

  60.   }
  61.   /////////////////////////////////////Demo data end////////////////////////////////////////////////
  62.   lcd.setProgressBarEnabled(false);
  63.   lcd.clear();
  64. }

复制代码


连接太阳能控制器调试



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-28 23:01 , Processed in 0.054206 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表