Các lỗi thường gặp khi sử dụng I2C LCD
- Hiển thị một dãy ô vuông.
- Màn hình chỉ in ra một ký tự đầu.
- Màn hình nhấp nháy.
- Các lỗi này chủ yếu là do sai địa chỉ bus, để fix lỗi các bạn thay địa chỉ mặc định là “0x27” thành “0x3F. - Trong trường hợp vẫn không được các bạn fix lỗi bằng cách nạp code tìm địa chỉ bus của I2C. - Sau khi tìm xong các bạn thay địa chỉ vừa tìm được vào vị trí “0x27” là xong.
Địa chỉ I2C 0x3F
Code scan địa chỉ i2c
`// ------ // i2c_scanner // ------
include <Wire.h>
void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); // Leonardo: wait for serial monitor Serial.println("\nI2C Scanner"); } void loop() { int nDevices = 0; Serial.println("Scanning..."); for (byte address = 1; address < 127; ++address) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); byte error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) { Serial.print("0"); } Serial.print(address, HEX); Serial.println(" !"); ++nDevices; } else if (error == 4) { Serial.print("Unknown error at address 0x"); if (address < 16) { Serial.print("0"); } Serial.println(address, HEX); } } if (nDevices == 0) { Serial.println("No I2C devices found\n"); } else { Serial.println("done\n"); } delay(5000); // Wait 5 seconds for next scan }`
Giao tiếp I2C LCD Arduino
Sơ đồ đấu nối
Phần cứng cần thiết
- Arduino
- Màn hình LCD 16×2 I2C
Code mẫu
# include <Wire.h> # include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F,16,2); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(2,0); lcd.print("tcl47.blogspot.com"); lcd.setCursor(0,1); lcd.print("Xin chao cac ban"); } void loop() { }
Giải thích code
LiquidCrystal_I2C lcd(0x3F,16,2);
- Đặt địa chỉ LCD là 0x3F cho màn hình LCD 16×2.
- 16 là số cột của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 20.
- 2 là số dòng của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 4.
lcd.init();
Khởi động màn hình LCD, bắt đầu cho phép Arduino sử dụng màn hình.
Bật đèn nèn LCD lcd.setCursor(2,0);
Đưa con trỏ tới hàng 1, cột 3. Lưu ý: giá trị hàng và cột bắt đầu từ số 0 có nghĩa 0 là hàng(cột) 1. lcd.print("tcl47.blogspot.com");
Xuất ra dòng chữ tcl47.blogspot.com tại vị trí con trỏ ở hàng 1, cột 3. lcd.setCursor(0,1); lcd.print("Xin chao cac ban");
Đoạn code này thì tương tự như trên, xuất ra dòng chữ “Xin chao cac ban”tại vị trí con trỏ ở hàng 2, cột 1. Bây giờ thì các bạn upload chương trình và xem kết quả nhé.