Hướng dẫn này là một phần của: Bàn phím
Tất cả các video hướng dẫn sử dụng bàn phím đều được liệt kê ở đây.
Sử dụng bàn phím 4x3 với Arduino
Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng bàn phím ma trận 4x3 với Arduino để đọc các lần nhấn phím. Bàn phím này có thể được sử dụng trong nhiều dự án khác nhau, chẳng hạn như tạo giao diện nhập liệu đơn giản cho hệ thống bảo mật hoặc bất kỳ ứng dụng nào yêu cầu người dùng nhập liệu. Đến cuối hướng dẫn này, bạn sẽ có thể đọc các lần nhấn phím và phản hồi với các phím cụ thể.

Hãy đảm bảo xem video đi kèm để có minh họa trực quan về cách đấu dây và triển khai mã (trong video tại 00:00).
Giải thích về Phần cứng
Các thành phần chính cho dự án này bao gồm bàn phím 4x3 và bo mạch Arduino. Bàn phím bao gồm một ma trận các nút được bố trí thành 4 hàng và 3 cột. Khi một nút được nhấn, nó kết nối một hàng cụ thể với một cột cụ thể, cho phép Arduino xác định nút nào đã được nhấn.
Bo mạch Arduino đóng vai trò là bộ điều khiển trung tâm đọc các tín hiệu đầu vào từ bàn phím. Nó sử dụng thư viện Keypad, giúp đơn giản hóa quá trình quản lý bàn phím ma trận và giúp dễ dàng phát hiện các lần nhấn phím hơn.
Chi tiết từ Bảng dữ liệu
| Nhà sản xuất | Nhiều hãng |
|---|---|
| Số bộ phận | Bàn phím 4x3 |
| Điện áp logic | 5 V |
| Dòng điện hoạt động | ≤ 20 mA |
| Tuổi thọ phím | ≥ 1.000.000 lần nhấn |
| Loại đóng gói | Bàn phím ma trận |
- Kết nối các chân của bàn phím đúng cách với các chân kỹ thuật số của Arduino.
- Sử dụng điện trở kéo lên hoặc kéo xuống nếu cần, tùy thuộc vào cách thiết lập của bạn.
- Đảm bảo thư viện Keypad được bao gồm trong Arduino IDE của bạn.
- Chống nhiễu (debounce) các lần nhấn phím trong phần mềm để tránh đọc nhiều lần.
- Kiểm tra từng phím để xác nhận đấu dây và chức năng đúng.
Hướng dẫn Đấu dây

Để đấu dây bàn phím 4x3 với Arduino, bạn sẽ kết nối các chân hàng và cột từ bàn phím với các chân kỹ thuật số trên Arduino. Kết nối các chân hàng (thường là 4 chân) với các chân 2, 3, 4 và 5 trên Arduino. Các chân cột (thường là 3 chân) nên được kết nối với các chân 6, 7 và 8.
Đảm bảo kết nối chân nối đất của bàn phím với chân nối đất của Arduino và chân nguồn với đầu ra 5V. Thiết lập này sẽ cho phép Arduino đọc trạng thái của từng phím khi được nhấn, sử dụng thư viện Keypad để xử lý việc quét ma trận.
Ví dụ Mã & Giải thích
Đoạn mã sau khởi tạo bàn phím và in phím được nhấn ra màn hình nối tiếp (serial monitor). Các giá trị phím được lưu trữ trong một mảng ký tự.
const byte ROWS = 4; //bốn hàng
const byte COLS = 3; //ba cột
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
Mảng keys định nghĩa bố cục của bàn phím, tương ứng với cách sắp xếp vật lý của các phím. Mỗi ký tự đại diện cho một nút trên bàn phím.

Tiếp theo, chúng ta thiết lập bàn phím trong hàm setup():
void setup(){
Serial.begin(9600);
Serial.println("Robojax 4x3 keypad");
}
Đoạn này khởi tạo giao tiếp nối tiếp ở tốc độ baud 9600, cho phép chúng ta xem các lần nhấn phím trong màn hình nối tiếp.
Cuối cùng, vòng lặp kiểm tra các lần nhấn phím và phản hồi tương ứng:
void loop(){
char key = keypad.getKey();
if (key){
Serial.println(key);
}
if (key =='4'){
Serial.println("Phím 4 được nhấn");
}
}
Ở đây, chương trình kiểm tra xem có phím nào được nhấn không bằng cách sử dụng keypad.getKey(). Nếu một phím được nhấn, nó sẽ in giá trị của phím đó. Ngoài ra, nếu phím '4' được nhấn, một thông báo cụ thể sẽ được hiển thị.
Trình diễn / Điều gì sẽ xảy ra
Khi thiết lập hoàn tất, nhấn bất kỳ phím nào trên bàn phím sẽ xuất ra ký tự tương ứng trên màn hình nối tiếp. Nếu phím '4' được nhấn, một thông báo đặc biệt sẽ được in ra cho biết phím đó đã được kích hoạt. Chức năng này cho phép bạn xây dựng dựa trên nền tảng này cho các ứng dụng phức tạp hơn.
Hãy cẩn thận với các đầu vào nổi có thể dẫn đến hành vi thất thường. Đảm bảo tất cả các kết nối được chắc chắn và kiểm tra từng phím để xác nhận chức năng hoạt động đúng (trong video tại 00:00).
Hướng dẫn này là một phần của: Bàn phím
- Mã Arduino và Video cho Bàn phím Bốn Phím
- Mã Arduino và Video: Bàn phím ma trận 4x4 màu đen
- Build a Simple Electronic Lock with Keypad and LCD Using Arduino
- Controlling an 8-channel relay with a 4x3 keypad
- Cách sử dụng Bàn phím mềm 4x4 với Arduino
- How to Use a 5x4 20-Key Keypad with Arduino to Detect Strings
- Lesson 67: Controlling an 8-Channel Relay with a Keypad Using Arduino
- 1602 LCD Keypad Shield: Mã Cơ Bản
/*
* Library taken from: https://playground.arduino.cc/Code/Keypad
* This is the Arduino code for a 4x3 keypad.
* Watch the video for details and demo: http://youtu.be/qIDzzG2LUtg
resources page: www.Robojax.com/RJT104
*
* Modified by Ahmad Shamshiri for the Robojax Video channel: www.Robojax.com/RJT104
* Date: July 11, 2018 at 19:56 in Ajax, Ontario, Canada
* Permission granted to share this code, given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
* This code has been downloaded from https://robojax.com
* Watch video instructions for this code:
*
*/
/* @file HelloKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates the simplest use of the matrix Keypad library.
|| #
*/
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6,7,8}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
// Robojax 4x3 keypad test
Serial.begin(9600);
Serial.println("Robojax 4x3 keypad");
}
void loop(){
// Robojax 4x3 keypad test
char key = keypad.getKey();
// Just print the pressed key
if (key){
Serial.println(key);
}
// This checks if 4 is pressed, then do something. Here we print the text, but you can control something.
if (key =='4'){
// If key matches what you are looking for
Serial.println("Key 4 is pressed");
}
}
Nghĩ bạn có thể cần
-
AmazonPurchase 4x3 keypad from Amazonamzn.to
Tài nguyên & tài liệu tham khảo
Chưa có tài nguyên nào.
Tập tin📁
Tập tin Fritzing
-
Membrane Matrix Keypad 4x3
Membrane Matrix Keypad 4x3.fzpz0.01 MB
Các tập tin khác
-
Thư viện bàn phím LCD
robojax-1602_LCD_keypad.zip0.01 MB