I. Mô tả thực hành

Trong bài này, chúng ta sẽ ôn tập tính tuần tự trong chương trình, làm quen với màn hình LCD và thực hành cho hiện chữ trên màn hình LCD. Ngoài ra trong phần lập trình, chúng ta làm quen với khái niệm thư viện và cách nạp một thư viện vào Arduino IDE.

II. LINH KIỆN VÀ CÁCH NỐI DÂY

Ta sử dụng mạch giao tiếp I2C giúp đơn giản hóa kết nối LCD vào board Arduino, chỉ điều khiển bằng 2 dây.

1: LCD  và 2: I2C

ArduinoKit VST (I2C module)
5VVCC
GNDGND
A4SDA
A5SDL

III. Thực hiện

Bước 1: Nạp thư viện LiquidCrystal_I2C lên Arduino IDE. Chi tiết cách nạp được miêu tả sau.

Bước 2: Tải đoạn code sau lên Arduino. Sau đó xoay biến trở sao cho nền chữ thấy rõ, phù hợp.

IV. Các khái niệm lý thuyết trong bài

4.1 Thư viện

4.1 Thư viện

Trong lập trình Arduino, đôi khi ta cần sử dụng một số thư viện, trong đó có chứa các đoạn mã (có chức năng giống như hàm) giúp điều khiển phần cứng, kinh kiện, hay thực hiện các phéo tính toán nâng cao,… Ví dụ trong bài này, ta cần các đoạn mã giúp điều khiển LCD nằm trong các thư viện có tên là Wire.h, LiquidCrystal_I2C.h.Trong chương trình ta cần khai báo các thư viện này bằng câu lệnh #include <Wire.h>. Cuối câu lệnh này không cần dấu “;”.

Một số thư viện đã có hỗ trợ sẵn trong Arduino IDE (built-in library). Tuy nhiên một số thư viện ta cần phải tải vào bằng tay cho Arduino IDE để có thể biên dịch được chương trình. Trong bài này, thư viện Wire.h là thư viện built-in, có sẵn trong Arduino IDE. Thư viện LiquidCrystal_I2C.h thì chưa có sẵn và ta cần cài vào để có thể điều khiển được LCD.

Bước tải thư viện này phải thực hiện trước khi nạp code vào Arduino.

Lưu ý:

Có thể bạn sẽ gặp một trong các trường hợp sau:

LCD không hiển thị thông tin mặc dù đã chỉnh biến trở I2C, hoặc là mỗi dòng chỉ hiển thị 1 ký tự đầu tiên. Điều này là bởi vì thư viện LiquidCrystal_I2C hiện tại không đúng, đặc biệt là nếu bạn sử dụng Arduino IDE phiên bản cũ. Nếu bạn không biết cách sửa trong file thư viện thì cách sửa đơn giản nhất là xóa hết các thư viện cho LCD hiện tại (ví dụ máy của tôi thì thư viện cho Arduino nằm ở đường dẫn <username>\Documents\Arduino\libraries) và tải vào thư viện phiên bản mới vào.

Tham khảo vấn đề này tại các thread này [1][2]

4.2 Giải thích một số câu lệnh

4.2 Giải thích một số câu lệnh

LiquidCrystal_I2C lcd(0x27,20,4): Câu lệnh này khởi tạo một đối tượng (object) có tên lcd thuộc lớp (class) LiquidCrystal_I2C với địa chỉ module I2C 0x27, kích thước 20 ký tự một dòng và có 4 dòng. Các địa chỉ I2C thường gặp là 0x27, 0x3f. Nếu LCD không hiện chữ thì thay địa chỉ kia vào.

Sau này, khi học lập trình C++ nâng cao, các bạn sẽ hiểu nhiều hơn về lập trình hướng đối tượng (object-oriented programming). Trong khuôn khổ của cuốn hướng dẫn này, chúng ta tạm hiểu đối tượng lcd là một “biến” đặc biệt thuộc “kiểu” LiquidCrystal_I2C. Gắn liền với đối tượng là các phương thức (method) mà có chức năng trong thực tế hoàn toàn giống hàm, tức là thực thi một công việc nào đó.

Ví dụ:

  • init(): khởi tạo LCD
  • backlight(): bật đèn nền
  • setCursor(x,y): chuyển con trỏ đến vị trí cột hàng, trong đó x là vị trí hàng và y là vị trí cột.

Ví dụ: lcd.setCursor(1,0) nghĩa là đặt con trỏ tại dòng đầu tiên và thụt vào 1 ô trên LCD.

Thực ra, trong các bài thực hành trước, chúng ta cũng đã sử dụng đối thương Serial và các phương thức của Serial như print() hay println().

V. Bài tập

Câu 1: Hiển thị tên trường học, lớp của bạn họ tên bạn lên màn hình LCD

VI. Demo Kết quả

Bài viết liên quan