Arduino Với LCD 1602, LCD 2004 I2C
Các lỗi thường gặp khi sử dụng I2C LCD
- 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.
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
Sơ đồ đấu nối giao tiếp IC2 với LCD 16×2. |
Phần cứng cần thiết
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. lcd.backlight();
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é.
Bây giờ thì các bạn upload chương trình và xem kết quả nhé.
Đăng nhận xét