Arduino Bàn phím
Bàn phím số được sử dụng rộng rãi trong nhiều thiết bị như khóa cửa, máy rút tiền tự động (ATM), máy tính bỏ túi...
Trong hướng dẫn này, chúng ta sẽ học:
- Cách sử dụng bàn phím ma trận 3x4 và bàn phím ma trận 4x4 với Arduino.
- Cách đọc giá trị từ bàn phím ma trận 3x4 và bàn phím ma trận 4x4 với Arduino.
- Cách xác thực mật khẩu được nhập từ bàn phím.
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 | × | Bàn phím ma trận 3x4 and 4x4 Kit | ||
| 1 | × | (Hoặc) Bàn phím ma trận 3x4 | ||
| 1 | × | (Hoặc) Bàn phím ma trận 4x4 | ||
| 1 | × | dây jumper | ||
| 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ề bàn phím số

Bàn phím là một tập hợp các nút được sắp xếp thành hàng và cột (gọi là ma trận). Mỗi nút được gọi là phím.
Bàn phím có nhiều loại. Hai loại phổ biến cho các dự án tự làm là bàn phím ma trận 3x4 (12 phím) và bàn phím ma trận 4x4 (16 phím).
Bố trí chân pin
Các chân của keypad được chia thành hai nhóm: hàng và cột.
Bàn phím ma trận 3x4 có 7 chân: 4 chân hàng (R1, R2, R3, R4) và 3 chân cột (C1, C2, C3).
Bàn phím ma trận 4x4 có 8 chân: 4 chân hàng (R1, R2, R3, R4) và 4 chân cột (C1, C2, C3, C4).

Cách hoạt động
Quá trình phát hiện nhấn phím được gọi là quét bàn phím.
Nó được gọi là “quét” vì nó kiểm tra từng phím một.
Các chân hàng được kết nối với các chân đầu ra của Arduino.
Các chân cột được kết nối với các pin đầu vào của Arduino (INPUT_PULLUP, ở trạng thái này, giá trị của pin đầu vào sẽ là HIGH khi phím chưa được nhấn).
Đối với mỗi hàng:
- Thiết lập tất cả các chân hàng ở mức HIGH.
- Chỉ thiết lập chân hàng hiện tại ở mức LOW.
- đọc trạng thái của từng cột.
- Nếu một chân cột ở mức HIGH ⇒ phím tại (hàng, cột) KHÔNG được ấn.
- Nếu một chân cột ở mức LOW ⇒ phím tại (hàng, cột) được ấn.
- Lặp lại quá trình trên cho các chân hàng tiếp theo.
※ Lưu ý:
Phần ở trên đây là một trong những phương pháp quét bàn phím. Ta có thể đảo ngược mọi tín hiệu HIGH thành LOW và mọi tín hiệu LOW thành HIGH để quét bàn phím.
⇒ Như chúng ta đã biết, một nút độc lập đòi hỏi một chân của Arduino và GND. Hãy lấy bàn phím ma trận 4×4 làm ví dụ. Nếu mỗi phím được xem như một nút độc lập, nó sẽ yêu cầu 16 chân Arduino cho 16 phím kèm với một chân GND. Nếu ta sắp xếp các phím thành dạng ma trận liên kết, ta chỉ cần dùng 8 chân Arduino, từ đó có thể tiết kiệm số chân của Arduino. Tóm lại, câu trả lời là: để tiết kiệm các chân của Arduino.
Sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image
Cách Lập Trình Cho Bàn Phím Số
Nhờ thư viện Keypad library, việc sử dụng keypad với Arduino dễ như ăn bánh, bất kể bạn có hiểu cách hoạt động của keypad hay không.
Mã Arduino
Bàn phím số 3x4
Bàn phím ma trận 4x4
Hướng dẫn từng bước
- Điều hướng đến biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
- Tìm kiếm “keypad”, sau đó tìm thư viện keypad của Mark Stanley, Alexander Brevig
- Nhấn Cài đặt nút để cài đặt thư viện keypad.

- Sao chép mã ở trên và mở bằng Arduino IDE
- Nhấn nút Tải lên trên Arduino IDE để tải mã lên Arduino
- Mở Serial Monitor
- Nhấn một số phím trên bàn phím số
- Xem kết quả trong Serial Monitor
Bàn phím số và Mật khẩu
Một ứng dụng phổ biến của bàn phím số là nhập mật khẩu. Trong ứng dụng này, chúng ta xác định hai phím đặc biệt:
- Một phím để bắt đầu nhập mật khẩu hoặc nhập lại từ đầu. Ví dụ, phím "*"
- Một phím để kết thúc việc nhập mật khẩu. Ví dụ, phím "#"
Mật khẩu sẽ là một chuỗi chứa các phím còn lại, ngoại trừ hai phím đặc biệt được chọn.
Khi một phím được nhấn.
- Nếu phím không phải '*' và cũng không phải '#', thêm ký tự đó vào chuỗi mật khẩu đã nhập của người dùng.
- Nếu phím là '#', so sánh chuỗi mật khẩu đã nhập của người dùng với mật khẩu để xác định mật khẩu nhập có đúng hay không, và sau đó làm rỗng chuỗi mật khẩu đã nhập của người dùng.
- Nếu phím là '*', làm rỗng chuỗi mật khẩu đã nhập của người dùng.
Bàn phím số - Mã mật khẩu
- Chạy đoạn mã ở trên
- Mở Serial Monitor
- Nhấn các phím "123456" và nhấn "#"
- Nhấn các phím "1234" và nhấn "#"
- Xem kết quả trên Serial Monitor
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.
Kiến thức bổ sung
Thách thức bản thân
- Hiển thị phím đã nhấn từ bàn phím lên LCD. Gợi ý: Tham khảo Arduino - Màn hình LCD
- Tạo ổ khóa cửa có bảo mật bằng mật khẩu sử dụng bàn phím.