LCD phổ thông khi giao tiếp “chay” với Arduino thì cần rất nhiều chân và để khắc phục tình trạng này, mô đun LCD I2C ra đời. Nó giao tiếp với Arduino chỉ còn 2 chân, song trong quá trình sử dụng thì bạn có thể gặp rất nhiều lỗi
CÁC LỖI THƯỜNG GẶP KHI SỬ DỤNG LCD I2C
Như các bạn đã biết, LCD phổ thông khi giao tiếp “chay” với Arduino thì cần rất nhiều chân và để khắc phục tình trạng này, mô đun LCD I2C ra đời. Nó giao tiếp với Arduino chỉ còn 2 chân, song trong quá trình sử dụng thì bạn có thể gặp rất nhiều lỗi. Cụ thể như sau:
Lỗi chữ cũ bị lưu lại khi in chữ mới có độ dài ngắn hơn chữ cũ
Đã có rất nhiều trường hợp mắc phải lỗi này, biểu hiện của nó là hiển thị %. Ví dụ ban đầu in ra 100%, sau đó cảm biến giảm, thông số in ra là 70%, nhưng thay vì in ra 70% thì nó lại in ra thành 700%.
LCD i2C
Thực ra thì đây không phải lỗi, sở dĩ nó xảy ra như vậy là vì một ô trong LCD i2C khi bạn chưa xóa thì nó vẫn còn, khi bạn gọi ô mới thì chỉ có ô cũ bị thay thế trong khi các kí tự của nó thì vẫn giữ nguyên. Áp dụng trong trường hợp ở trên in ra ô mới đồng thời in ra khoảng trắng trong ô cũ không dùng đến (ví dụ như số ‘0’ của số 100 cũ bị thừa khi số mới hiển thị lên chỉ là 70, lúc này màn hình sẽ hiển thị ” 70 %”; nếu in thụt vào 1 ô, đồng thời in khoảng trắng ra ô trước đó thì màn hình sẽ hiển thị ” 700%”).
Lỗi khi in thì bị delay toàn bộ chương trình khiến chương trình hoạt động chậm:
Đây là một lỗi cực kì nguy hiểm khi sử dụng thư viện màn hình LCD I2C.
Ví dụ cho một hàm là đọc giá trị cảm biến A và triết áp B, nếu giá trị A > B thì cho led X sáng. Một hàm là “hienthitrietap” cho màn hình hiển thị thông số của triết áp như sau:
-
void loop()
-
{
-
A = analogRead(A0);
-
B = analogRead(A1);
-
hienthitrietap(b);
-
if (a > b) {
-
digitalWrite(13, HIGH);
-
delay(100);
-
digitalWrite(13, LOW);
-
}
-
}
LCD i2C
Khi chạy trên thực tế, giá trị A đã lớn hơn B rồi nhưng vẫn phải đợi delay một thời gian khoảng 1-3 giây thì đèn 13 mới sáng. Bởi vì khi code trên thực thi, một khoảng thời gian bị delay do phải in thông số lên màn hình liên tục. Với dự án không yêu cầu phải nhanh thì nó không thành vấn đề, nhưng với những dự án cần sự tác động ngay lập tức thì bị delay khiến cho hệ thống gần như bỏ đi.
Lỗi chữ “H ám ảnh” và dòng đầu “Đen Xì” thường gặp khi dùng LCD I2C.
Như các bạn đã biết 0x27 là địa chỉ màn hình trong bus I2C. Tuy nhiên, giờ đây các LCD i2C lại không theo 0x27 nữa, khi đó chương trình sẽ lỗi như lỗi chữ “H”, các bạn chơi qua LCD I2C bằng code mẫu trên ARDUINO.VN gần như đều đã gặp lỗi này, và chắc chắn thời gian tới nữa thì nó sẽ vẫn còn thay đổi thêm nữa, vì vậy cần một cách tìm chung để fix lỗi.
Lỗi chữ “H” là khi bạn khi dùng LCD kết hợp với i2C khi in ra màn hình một kí tự hoặc chuỗi ký tự nào đó nhưng chữ “H” hiện lên hoặc dòng màn hình trên cùng hiện lên đen xì. Lỗi này chủ yếu là do địa chỉ bus của LCD trong i2C bị sai, để fix lỗi này các bạn cần nạp code tìm địa chỉ, khi đó địa chỉ bus LCD “thực sự” của bạn hiện lên, copy mã này thay cho dòng “0x27” vậy là xong.
Trên đây là một số lỗi thường gặp khi sử dụng LCD i2C mà các bạn có thể tham khảo. Nếu chẳng may gặp lỗi bạn hãy đến ngay các trung tâm uy tín để được trợ giúp và hỗ trợ nhé.