Translate

2018年7月4日 星期三

Arduino UNO LCD 2004A I2C

參考資料:https://makerpro.cc/2017/02/how-arduino-use-i2c-to-control-lcd-module/

這個看起來很簡單只需接四條線,也有範例程式,但花了我快一個星期才試好。最後發現是LCD出廠把光源調到最亮,字才會跑不出來。最後也是去購買的拍賣看到留言才知道問題。
參考資料用的I2C位址係0x27,因我使用的LCD I2C晶片不一樣所以不同。
可以參考https://docs.labs.mediatek.com/resource/linkit7697-arduino/en/tutorial/driving-1602-lcd-with-pcf8574-pcf8574a

PCF8574A這個IC的位址0X3f
PCF8574這個IC的位址0X27
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR    0x3f  // 定義I2C使用PCF8574A這個IC的位址
// 其實位址可以利用A0,A1或A2改變
// 定義LiquidCrystal函式庫裡LCD各個腳位
#define BACKLIGHT_PIN 3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin,BACKLIGHT_PIN, POSITIVE);
void setup() {
  lcd.begin(20,4);        // 4行,每行20個字
  lcd.setBacklight(HIGH); // 開啟LCD背光,要關閉就用LOW
  lcd.setCursor ( 0, 0 );            // 到第一行第一個字
  lcd.print("hello, world!");
}
 int n = 1; // 顯示LCD刷新次數
 void loop() {
  lcd.noCursor();
  lcd.setCursor (16,3);         // 到第四行的第16個字元
  lcd.print(n++,DEC);           // 更新次數
                                // 覆蓋前一個數字
  delay(500);                   // 等待半秒鐘後更新
  lcd.cursor();
  delay(500);
}

1 則留言:

  1. 真的謝謝你 ! 我也是相同困擾 把亮度調低後 字就出現了!!! 多謝!!!!

    回覆刪除