Hướng dẫn sử dụng màn hình LCD 1602 I2C với Arduino Uno
LCD 1602 I2C là loại màn hình hiển thị 2 dòng, mỗi dòng 16 ký tự, sử dụng giao tiếp I2C để kết nối với vi điều khiển như Arduino Uno. Việc sử dụng module I2C giúp giảm số chân kết nối từ 12 xuống còn 4 chân, rất tiện lợi cho các dự án nhỏ gọn.
Hướng dẫn sử dụng màn hình LCD 1602 I2C với Arduino Uno
1. Giới thiệu
LCD 1602 I2C là loại màn hình hiển thị 2 dòng, mỗi dòng 16 ký tự, sử dụng giao tiếp I2C để kết nối với vi điều khiển như Arduino Uno. Việc sử dụng module I2C giúp giảm số chân kết nối từ 12 xuống còn 4 chân, rất tiện lợi cho các dự án nhỏ gọn.
2. Phần cứng cần chuẩn bị
- Arduino Uno
- Màn hình LCD 1602 I2C
- Dây nối
- Điện trở 220Ω (nếu dùng LED ngoài)
3. Sơ đồ kết nối
LCD I2C |
Arduino Uno |
VCC |
5V |
GND |
GND |
SDA |
A4 |
SCL |
A5 |
4. Cài đặt thư viện trong Arduino IDE
- Mở Arduino IDE
- Vào menu: Sketch > Include Library > Manage Libraries
- Tìm và cài đặt thư viện: LiquidCrystal I2C
5. Code mẫu
Dưới đây là ví dụ cơ bản để hiển thị văn bản trên LCD và nhấp nháy LED:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
LiquidCrystal_I2C lcd(I2C_ADDR, 16, 2);
const int ledPin = 2;
unsigned long previousMillis = 0;
const long interval = 500;
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("WWW.PYWORLD.VN");
lcd.setCursor(0, 1);
lcd.print("Testing LCD...");
pinMode(ledPin, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
digitalWrite(ledPin, !digitalRead(ledPin));
}
}
6. Gợi ý kiểm tra địa chỉ I2C
Địa chỉ I2C phổ biến là 0x27 hoặc 0x3F. Nếu màn hình không hiển thị, bạn có thể sử dụng code I2C Scanner để xác định địa chỉ thực tế của module LCD.
7. Code kiểm tra địa chỉ I2C (I2C Scanner)
Nếu màn hình LCD không hiển thị gì hoặc không phản hồi, có thể địa chỉ I2C bạn đang dùng không đúng. Dưới đây là đoạn code I2C Scanner giúp bạn tìm đúng địa chỉ I2C của thiết bị:
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop() {
byte error, address;
int count = 0;
Serial.println("Scanning...");
for (address = 1; address < 127; address++) {
Wire.beginTransmission(address);
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(" !");
count++;
delay(10);
}
}
if (count == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("Done\n");
delay(5000);
}
Xem thêm