參考資料: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);
}
#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);
}
真的謝謝你 ! 我也是相同困擾 把亮度調低後 字就出現了!!! 多謝!!!!
回覆刪除