Arduino Shield LCD và bàn phím

Arduino LCD Keypad Shield là một module hữu ích kết hợp màn hình LCD 16x2 với sáu nút nhấn (Phải, Lên, Xuống, Trái, Chọn và Đặt lại) để người dùng tương tác. Hướng dẫn này sẽ giúp bạn thiết lập và lập trình shield này bằng một bo mạch Arduino.

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 Keypad Shield
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 Keypad Shield

LCD Keypad Shield có:

  • Màn hình LCD 16x2 được điều khiển bằng thư viện LiquidCrystal
  • 5 nút nhấn được kết nối với một chân analog duy nhất (A0)
  • Một nút reset để khởi động lại Arduino
  • Một biến trở để điều chỉnh độ tương phản của LCD

Sơ đồ chân

sơ đồ chân của lcd bàn phím ma trận shield

Bảng dưới đây minh họa sự ánh xạ các chân giữa LCD Keypad Shield và Arduino khi shield được ghép lên bo mạch.

Shield Pin Function Arduino Pin
DB4 Data 4
DB5 Data 5
DB6 Data 6
DB7 Data 7
RS Register Select 8
E Enable 9
Analog A0 Button Input A0

Nút Đặt lại

Mạch shield có một nút reset, được kết nối với chân reset của Arduino. Nhấn nút này sẽ khởi động lại Arduino, làm cho chương trình được đặt lại.

Biến trở

Bảng shield có một biến trở nhỏ ở gần màn hình LCD. Biến trở này được dùng để điều chỉnh độ tương phản của màn hình LCD. Nếu chữ không hiển thị rõ, hãy xoay biến trở từ từ để chữ hiển thị rõ hơn.

Sơ đồ đấu dây

Chỉ cần cắm LCD Keypad Shield vào bo mạch Arduino của bạn. Các chân cắm sẽ tự động căn chỉnh.

sơ đồ nối dây shield lcd và bàn phím cho Arduino

This image is created using Fritzing. Click to enlarge image

Mã Arduino

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-lcd-keypad-shield */ #include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 4, 5, 6, 7); void setup() { Serial.begin(9600); Serial.println("Started"); // Debugging lcd.begin(16, 2); lcd.print("Hello!"); delay(3000); } void loop() { int key = analogRead(A0); //Serial.println(key); // Debugging lcd.clear(); if (key < 50) lcd.print("RIGHT"); else if (key < 200) lcd.print("UP"); else if (key < 400) lcd.print("DOWN"); else if (key < 600) lcd.print("LEFT"); else if (key < 800) lcd.print("SELECT"); else if (key < 1000) lcd.print("RST"); // If RST has a value, add here else lcd.print("Press key!"); delay(200); }

Hướng dẫn từng bước

  • Gắn LCD Keypad Shield lên Arduino
  • Kết nối Arduino với PC bằng cáp USB
  • Mở Arduino IDE, chọn board và cổng đúng
  • Sao chép mã ở trên và dán vào Arduino IDE
  • Nhấn nút Tải lên trên Arduino IDE để nạp mã vào Arduino
  • Nhấn từng nút trên shield lần lượt và kiểm tra xem văn bản tương ứng có hiển thị trên LCD không
  • Xem kết quả trên màn hình LCD

Nếu màn hình LCD vẫn trống, hãy đảm bảo:

  • Shield được kết nối đúng với Arduino.
  • Biến trở được điều chỉnh để có độ tương phản phù hợp.
  • Mã được nạp lên khớp với ví dụ được cung cấp.
  • Bộ mạch Arduino được cấp nguồn đúng.

Làm theo các bước này sẽ giúp Arduino LCD Keypad Shield của bạn hoạt động đúng.

Để biết thêm các chức năng điều khiển màn hình LCD, vui lòng tham khảo hướng dẫn Arduino LiquidCrystal LCD này.

Để cải thiện tính mô-đun và khả năng đọc hiểu, chúng tôi tái tổ chức mã nguồn trước đó thành các hàm riêng biệt:

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-lcd-keypad-shield */ #include <LiquidCrystal.h> // Define constants for key representations const int KEY_RIGHT = 0; const int KEY_UP = 1; const int KEY_DOWN = 2; const int KEY_LEFT = 3; const int KEY_SELECT = 4; const int KEY_NONE = 5; LiquidCrystal lcd(8, 9, 4, 5, 6, 7); int getKey() { int analogValue = analogRead(A0); //Serial.println(analogValue); // Debugging if (analogValue < 50) return KEY_RIGHT; else if (analogValue < 200) return KEY_UP; else if (analogValue < 400) return KEY_DOWN; else if (analogValue < 600) return KEY_LEFT; else if (analogValue < 800) return KEY_SELECT; else return KEY_NONE; } void setup() { Serial.begin(9600); Serial.println("Started"); // Debugging lcd.begin(16, 2); lcd.print("Hello!"); delay(3000); } void loop() { lcd.clear(); int key = getKey(); switch (key) { case KEY_RIGHT: lcd.print("RIGHT"); break; case KEY_UP: lcd.print("UP"); break; case KEY_DOWN: lcd.print("DOWN"); break; case KEY_LEFT: lcd.print("LEFT"); break; case KEY_SELECT: lcd.print("SELECT"); break; default: lcd.print("Press key!"); break; } delay(200); }

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.