Cách giao tiếp Keypad với màn hình LCD trong Arduino
Trong bài viết này mình sẽ hướng dẫn các bạn cách giao tiếp Keypad với màn hình LCD trong Arduino. Trong thực tế được áp dụng rất nhiều như các ổ khóa cửa, tủ thông mình, máy tính, cây ATM, ... .
Qua bài viết này các bạn có thể học được cách truyền dữ liệu giữa hai thiết bị khác nhau. Khi đã nắm vững thì việc thực hiện kết nối giữa các thiết bị với nhau rất dễ dàng.
Các thiết bị cần thiết để Keypad giao tiếp với LCD
Để có thể giao tiếp giữa Keypad và màn hình LCD ta cần thêm một số thiết bị khác như sau:
- 1 x Arduino Uno.
- 1 x USB 2.0 loại A / B.
- 1 x LCD I2C 16x2.
- 1 x Keypad 4x4.
- 1 x Dây điện nối.
Ngoài ra các bạn có thể thay thế màn hình LCD I2C 16x2 và Keypad 4x4 bằng loại mà bạn mong muốn. Ở đây mình sử dụng hai loại này để giao tiếp với nhau.
Bài viết này được đăng tại [free tuts .net]
Sơ đồ mạch điện để Keypad giao tiếp với LCD trong Arduino
Dưới đây là sơ đồ mạch điện để Keypad giao tiếp với màn hình LCD trong Arduino.
Ta lần lược nối các thiết bị màn hình LCD I2C và Keypad với Arduino. Trên màn hình LCD I2C cho ra 4 chân bao gồm chân GND, VCC và 2 chân tín hiệu SDA, SCL.
Màn hình LCD I2C 16x2.
- Nối chân GND của LCD I2C với chân GND của Arduino.
- Nối chân VCC của LCD I2C với chân 5V của Arduino.
- Nối hai chân tín hiệu SDA, SCL lần lượt với chân A4, A5 của Arduino.
Keypad 4x4.
- Nối lần lượt các chân điều khiển của Keypad 4x4 vào các chân 2, 3, 4, 5, 6, 7, 8, 9 của Arduino.
Cách giao tiếp Keypad với màn hình LCD trong Arduino
Để có thể sử dụng hai thiết bị Keypad và màn hình LCD ta cần thêm hai thiết bị này vào Arduino. Đầu tiên ta vào Tool -> Manager Libraries.
Tiếp đến ta tìm kiếm hai thiết bị này và cài đặt nó.
Keypad 4x4.
LCD I2C 16x2.
Dưới đây mình có đoạn chương trình xử lý giúp Keypad có thể giao tiếp được với LCD. Khi người dùng nhấn vào bàn phím thì nội dung sẽ được hiển thị lên màn hình LCD.
//khai báo thư viện keypad và liquidCrystal_I2c để sử dụng các hàm hỗ trợ #include <Keypad.h> #include <LiquidCrystal_I2C.h> //khai báo số hàng số cột của keypad const int ROW_NUM = 4; const int COLUMN_NUM = 4; //khai báo các ký tự trả về từ keypad char keys[ROW_NUM][COLUMN_NUM] = { {'1','2','3', 'A'}, {'4','5','6', 'B'}, {'7','8','9', 'C'}, {'*','0','#', 'D'} }; //khai báo chân điều khiển keypad trên arduino byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; //khai báo sử dụng màn hình lcd với 16 cột và hai hàng Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); LiquidCrystal_I2C lcd(0x27, 16, 2); //khai báo biến để đếm số ký tự trên màn hình lcd int cursorColumn = 0; void setup(){ lcd.init(); lcd.backlight(); } void loop(){ //khai báo và gán giá trị nhận được từ keypad cho biến key char key = keypad.getKey(); //nếu tồn tại ký tự key thì hiển thị nó lên màn hình LCD if (key) { lcd.setCursor(cursorColumn, 0); lcd.print(key); //sau khi hiển thị thì tăng số lượng ký tự lên 1 cursorColumn++; //nếu số lượng ký tự quá 16 thì xóa đi và reset biến cursorColumn if(cursorColumn == 16) { lcd.clear(); cursorColumn = 0; } } }
Kết quả: Khi các bạn đã kết nối các thiết bị và tiến hành nạp code cho Arduino. Bây giờ chỉ cần kiểm tra bằng cách nhấn các phím xem nó có hiển thị lên màn hình hay không.
Kết luận
Như vậy là chúng ta đã tìm hiểu về cách giao tiếp giữa Keypad với màn hình LCD I2C. Khi các bạn đã biết cách kết nối giữa các thiết bị thì có thể tự mua cho mình để khám phá nhé. Bài tiếp theo mình sẽ hướng dẫn các bạn cách điều khiển Touch Sensor trong Arduino.