Lỗi lcd i2c chỉ có 1 chữ h năm 2024
Qua bài viết hôm nay chúng ta sẽ đi sâu vào tìm hiểu các sử dụng LCD và giao tiếp với module IC2 nhé. Show
Giới thiệu LCD 16×2Màn hình LCD 16×2Thông số kỹ thuật LCD 16×2LCD 16×2 được sử dụng để hiển thị trạng thái hoặc các thông số.
LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang làm. Module I2C ArduinoModule I2C LCD 16×2LCD có quá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển. Module I2C LCD ra đời và giải quyết vấn để này cho bạn. Thay vì phải mất 6 chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối. Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay. Ưu điểm
Thông số kĩ thuật
Để sử dụng màn hình LCD giao tiếp I2C sử dụng Arduino thì ta cần cài đặt thư viện Liquidcrystal_I2C. Tại đây
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.
Giao tiếp I2C LCD ArduinoModule I2C LCD 16×2 Arduino UNO GND GND VCC 5V SDA A4/SDA SCL A5/SCL Sơ đồ đấu nốiSơ đồ đấu nối giao tiếp IC2 với LCD 16×2.Các linh kiện cần thiết cho dự án:Tên linh kiện Số lượng Shopee Arduino UNO R3 1 Mua ngay Dây cáp nạp 1 Mua ngay Màn hình LCD 16×2 1 Mua ngay Module I2C LCD 16×2 1 Mua ngay Dây cắm (Đực – Cái) 1 Mua ngay Code mẫu
include
include LiquidCrystal_I2C lcd(0x3F,16,2); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(2,0); lcd.print("Arduinokit.vn"); lcd.setCursor(0,1); lcd.print("Xin chao cac ban"); } void loop() { } Giải thích codeLiquidCrystal_I2C lcd(0x3F,16,2);
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(); Bật đèn nền LCD 16×2. 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("Arduinokit.vn"); Xuất ra dòng chữ Arduinokit.vn 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é. Lời kếtQua bài hôm nay các bạn biết cách làm thế nào để hiển thị các ký tự và chuỗi ký tự lên LCD 16×2 và biết cách giao tiếp I2C. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách giao diện I2C LCD với Arduino và cách hiển thị các ký tự tĩnh, cuộn và tùy chỉnh trên I2C LCD. Màn hình LCD I2C này là một thiết bị 16×2 có nghĩa là nó có thể hiển thị 16 cột bằng hai hàng ký tự. Các ký tự là chữ và số, nhưng bạn có thể tạo các ký tự tùy chỉnh cho đồ họa cơ bản, biểu đồ thanh loại đó. Màn hình LCD có loại bộ điều khiển hd44780 thông thường và nó cũng có mạch I2C được kết nối với nó giúp dễ dàng kết nối với bảng Arduino. Màn hình LCD 16X2 không có mạch I2C có mười sáu chân. Nhưng nếu chúng ta muốn kết nối bảng này trực tiếp với Arduino, chúng ta phải sử dụng ít nhất tám chân của Arduino, điều này sẽ rất lãng phí. Vì vậy, giải pháp tốt hơn là sử dụng màn hình LCD I2C thay vì màn hình LCD 16×2 thông thường. Trong hướng dẫn này, chúng tôi đang sử dụng 16×2 I2C LCD, nhưng LCD có kích thước bất kỳ cũng sẽ hoạt động giống như cách chúng ta sẽ học trong hướng dẫn này. Ưu điểm của việc sử dụng màn hình LCD I2C là chúng ta chỉ cần sử dụng bốn chân (bao gồm cả chân VCC và GND) của Arduino để kết nối với màn hình này. Ở mặt sau của màn hình tinh thể lỏng này, bạn cũng có thể thấy một điện trở thay đổi. Biến trở này được sử dụng để sửa đổi độ sáng của màn hình LCD. Chiết áp này rất tiện dụng khi bạn đang sử dụng mô-đun hiển thị này trong các điều kiện ánh sáng khác nhau. Vì vậy, bây giờ hãy bắt đầu với sơ đồ chân của màn hình này. Màn hình này có bốn chân:
Bây giờ hãy xem cách kết nối màn hình LCD này với Arduino UNO. Màn hình LCD I2C giao diện với ArduinoBây giờ chúng ta sẽ thấy sơ đồ nối dây của I2C LCD với Arduino UNO. Sơ đồ nối dây rất đơn giản. Trong mạch này, chúng tôi đang sử dụng các chân giao tiếp I2C mặc định của Arduino UNO. Trong bo mạch này, A5 là chân SCL mặc định và A4 là chân SDA mặc định cho giao tiếp I2C. Vì vậy, bạn cần kết nối A5 với chân SCL của LCD và A4 với chân SDA của màn hình tinh thể lỏng. Bạn cũng có thể kiểm tra bảng này để biết các kết nối dây. Arduino UNO I2C LCD A5 · SCL A4 · SDA GND · GND · 5V VIN Cài đặt I2C LCD Arduino LibraryVì vậy, chúng tôi sẽ chuyển sang phần mã hóa. Trước khi viết code, chúng ta cần chuẩn bị Arduino IDE để viết code. Chúng tôi sẽ giới thiệu thư viện màn hình LCD I2C trong Arduino IDE. Thư viện này không có sẵn trong trình biên dịch. Vì vậy, chúng ta cần cài đặt một thư viện bên ngoài. Có rất nhiều thư viện LCD I2C có sẵn. Bạn có thể sử dụng các thư viện khác nhau nếu muốn. Nhưng trong hướng dẫn này, chúng tôi đang sử dụng thư viện được phát triển bởi johnrickman. Bây giờ thêm thư viện này bằng cách làm theo các bước sau:
Cho đến bây giờ bạn đã cài đặt thành công thư viện và tạo sơ đồ mạch. Lấy địa chỉ LCD I2CKhi bạn kết nối màn hình I2C của mình với Arduino, bạn cần kiểm tra địa chỉ của nó. Bởi vì mọi thiết bị I2C đều có một địa chỉ được liên kết với nó. Đối với nhiều thiết bị của I2C LCD, địa chỉ mặc định được 0x27 trong đó 0x hiển thị định dạng hex của các số. Nhưng địa chỉ có thể khác nhau trong một số trường hợp. Địa chỉ này phụ thuộc vào vị trí của miếng đệm A0, A1 và A2 trên bộ điều khiển I2C trên thiết bị này. Như bạn có thể thấy, chúng tôi có ba miếng hàn, vì vậy chúng tôi có thể có 8 giá trị địa chỉ khác nhau tùy thuộc vào kết nối của miếng đệm. Pad A0 Pad A1 Pad A2 Địa chỉ HEX 1 1 1 0x27 0 1 1 0x26 1 0 1 0x25 0 0 1 0x24 1 1 0 0x23 0 1 0 0x22 1 0 0 0x21 0 0 0 0x20 Nhưng bạn không cần phải lo lắng về các kết nối bên trong của thiết bị này; Chúng tôi sẽ sử dụng mã được cung cấp bên dưới để kiểm tra địa chỉ của bộ điều khiển. Bây giờ sao chép mã này và tải nó lên bảng của bạn. ` include |