Arduino Màn hình LCD I2C
Trong bài hướng dẫn Arduino LCD I2C này, chúng ta sẽ học cách kết nối một LCD I2C (màn hình hiển thị tinh thể lỏng) với bo mạch Arduino. Màn hình LCD rất phổ biến và được sử dụng rộng rãi trong các dự án điện tử để hiển thị thông tin. Có nhiều loại LCD. Hướng dẫn này lấy LCD 16x2 (16 cột và 2 hàng) làm ví dụ. Các LCD khác cũng tương tự.
Phần cứng cần chuẩn bị
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | LCD I2C | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về LCD I2C 16x2
Trong Arduino - Màn hình LCD, chúng ta đã học cách sử dụng màn hình LCD thông thường. Tuy nhiên, việc nối dây giữa Arduino và màn hình LCD thông thường rất phức tạp. Vì vậy, LCD I2C đã được tạo ra để đơn giản hóa việc nối dây. Thực ra, LCD I2C được cấu thành từ một LCD thông thường, một module I2C và một biến trở.
Bố trí các chân
LCD I2C sử dụng giao diện I2C, nên nó có 4 chân:
- GND pin: cần được kết nối với GND (0V).
- VCC pin: nguồn cấp cho LCD, cần được kết nối với VCC (5V).
- SDA pin: tín hiệu dữ liệu I2C
- SCL pin: tín hiệu đồng hồ I2C

Tọa độ LCD
LCD I2C 16x2 có 16 cột và 2 hàng. Các cột và hàng được đánh số từ 0.

Sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image
| LCD I2C | Arduino Uno, Nano | Arduino Mega |
|---|---|---|
| Vin | 5V | 5V |
| GND | GND | GND |
| SDA | A4 | 20 |
| SCL | A5 | 21 |
Cách Lập Trình Cho LCD I2C
Nhờ thư viện LiquidCrystal_I2C, việc sử dụng LCD dễ như ăn bánh.
- Bao gồm thư viện:
- Khai báo một đối tượng LiquidCrystal_I2C với địa chỉ I2C, số cột và số hàng:
- Khởi tạo màn hình LCD.
- Di chuyển con trỏ đến vị trí mong muốn (cột_index, hàng_index)
- Hiển thị một thông điệp lên LCD.
Còn rất nhiều điều nữa chúng ta có thể làm với LCD (xem phần Làm nhiều hơn với LCD).
※ Lưu ý:
Địa chỉ I2C của LCD có thể khác nhau tùy theo nhà sản xuất. Trong mã nguồn, chúng tôi đã sử dụng 0x27, được nhà sản xuất DIYables chỉ định.
Mã Arduino
Hướng dẫn từng bước
- Đi tới biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
- Tìm kiếm "LiquidCrystal I2C", sau đó tìm thư viện LiquidCrystal_I2C của Frank de Brabander
- Nhấn nút Cài đặt để cài đặt thư viện LiquidCrystal_I2C.

- Sao chép mã ở trên và mở bằng Arduino IDE
- Nhấp chuột vào nút Tải lên trên Arduino IDE để tải mã lên Arduino
- Xem kết quả trên LCD

- Thử chỉnh sửa văn bản và vị trí
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.
Làm được nhiều hơn với màn hình LCD
Ký tự tùy chỉnh
Hàm lcd.print() chỉ hỗ trợ ký tự ASCII. Nếu bạn muốn hiển thị một ký tự đặc biệt hoặc ký hiệu (ví dụ: trái tim, chim giận dữ), bạn cần sử dụng trình tạo ký tự dưới đây.
LCD 16x2 có thể hiển thị 32 ký tự (2 hàng và 16 cột). Mỗi ký tự được tạo thành từ 40 điểm ảnh (8 hàng và 5 cột).
Bộ tạo ký tự đại diện cho một ký tự (40 pixel). Bạn chỉ cần thực hiện các bước sau:
Kết quả trên màn hình LCD:

Nhiều ký tự tùy chỉnh
Chúng ta có thể tạo tối đa 8 ký tự tùy chỉnh (được đánh chỉ mục từ 0 đến 7). Ví dụ dưới đây tạo và hiển thị ba ký tự.
Kết quả trên màn hình LCD:

Tóm tắt: cách sử dụng ký tự tùy chỉnh trên màn hình LCD
- Sử dụng trình tạo ký tự ở trên để tạo mã nhị phân cho ký tự tùy chỉnh.
- Khai báo mã nhị phân cho ký tự tùy chỉnh (sao chép từ bước ở trên)
- Tạo ký tự tùy chỉnh và gán cho một giá trị chỉ mục (từ 0 đến 7) trong hàm setup()
- Hiển thị ký tự tùy chỉnh trên LCD bất cứ lúc nào, bất cứ nơi đâu (trong hàm setup() hoặc loop())
Các chức năng khác
Thêm các hàm dưới đây vào hàm loop() lần lượt. Và thêm delay(5000) sau mỗi hàm.
- Xóa màn hình LCD
- Di chuyển con trỏ đến góc trên bên trái của màn hình LCD
- Di chuyển con trỏ chuột tới một vị trí (cột, hàng)
- Hiển thị con trỏ LCD
- Ẩn con trỏ LCD.
- Hiển thị con trỏ LCD đang nhấp nháy
- Tắt con trỏ LCD nhấp nháy.
- Và xem thêm tại Tài liệu tham khảo Thư viện LiquidCrystal
Thách thức bản thân
Sử dụng LCD để thực hiện một trong các dự án sau:
- Gửi văn bản từ PC (qua Serial Monitor) và hiển thị trên LCD. Gợi ý: Xem tại How to send data from PC to Aduino
- Hiển thị phím đã nhấn từ keypad lên LCD. Gợi ý: Xem tại Arduino - Bàn phím
Khắc phục sự cố trên LCD I2C
Nếu văn bản không hiển thị trên LCD I2C, hãy kiểm tra các vấn đề sau:
- Điều chỉnh độ sáng của LCD bằng cách xoay biến trở ở mặt sau của LCD
- Tùy thuộc vào nhà sản xuất, địa chỉ I2C của LCD có thể khác nhau. Thông thường, địa chỉ I2C mặc định của LCD là 0x27 hoặc 0x3F. Hãy thử các giá trị này lần lượt. Nếu bạn vẫn thất bại, hãy chạy đoạn mã dưới đây để tìm địa chỉ I2C.
Kết quả trên Serial Monitor: