Tìm kiếm mã

Cách sử dụng Bàn phím mềm 4x4 với Arduino

Cách sử dụng Bàn phím mềm 4x4 với Arduino

Trong hướng dẫn này, chúng ta sẽ khám phá cách kết nối và sử dụng bàn phím mềm 4x4 với Arduino. Bàn phím này có mười sáu phím nhưng chỉ cần tám chân để kết nối, khiến nó trở thành một thiết bị đầu vào nhỏ gọn và hiệu quả cho nhiều dự án khác nhau. Đến cuối hướng dẫn này, bạn sẽ có thể đọc đầu vào từ bàn phím và kích hoạt các hành động dựa trên những đầu vào đó.

4x4 soft keypdad

Chúng ta sẽ sử dụng thư viện Keypad để giao tiếp với bàn phím, cho phép chúng ta dễ dàng phát hiện phím nào đang được nhấn. Chương trình chúng ta sẽ triển khai sẽ hiển thị phím được nhấn trên màn hình nối tiếp và thực hiện hành động khi một phím cụ thể được nhấn, chẳng hạn như phím '4'. Để có hướng dẫn trực quan hơn, hãy nhớ xem video (trong video tại 00:00).

Phần cứng được giải thích

Thành phần chính của dự án này là bàn phím mềm 4x4, bao gồm 16 nút được bố trí theo dạng lưới. Mỗi nút kết nối với một chân cụ thể trên Arduino, cho phép nó phát hiện khi một nút được nhấn. Bàn phím hoạt động bằng phương pháp quét ma trận, trong đó các hàng và cột được kích hoạt tuần tự để xác định phím nào đang được nhấn.

Để kết nối bàn phím, bạn sẽ cần sử dụng tám chân kỹ thuật số trên Arduino. Các hàng thường được kết nối với các chân 2 đến 5, trong khi các cột kết nối với các chân 6 đến 9. Sự sắp xếp này cho phép Arduino đọc trạng thái của từng phím một cách hiệu quả.

Chi tiết bảng dữ liệu

Chiều rộng69mm
Chiều dài76mm
Chiều dài cáp84mm
Chiều rộng đầu nối20mm
Khoảng cách lỗ đầu nối2.56mm

  • Đảm bảo đấu dây đúng các chân hàng và cột để tránh đọc sai.
  • Sử dụng điện trở kéo lên nếu cần thiết để ổn định các lần đọc đầu vào.
  • Chống nhiễu phím trong phần mềm để tránh đọc nhiều lần cho một lần nhấn.
  • Kiểm tra từng phím riêng lẻ để đảm bảo hoạt động.
  • Giữ bàn phím khô ráo và sạch sẽ để duy trì hiệu suất.

Hướng dẫn đấu dây

Arduino wiring for 4x4 soft keypad
Arduino wiring for 4x4 soft keypad

Để đấu dây bàn phím 4x4 với Arduino, hãy kết nối các chân hàng của bàn phím với các chân kỹ thuật số trên Arduino như sau: kết nối hàng đầu tiên với chân 2, hàng thứ hai với chân 3, hàng thứ ba với chân 4 và hàng thứ tư với chân 5. Đối với các chân cột, hãy kết nối cột đầu tiên với chân 6, cột thứ hai với chân 7, cột thứ ba với chân 8 và cột thứ tư với chân 9.

Thiết lập này cho phép Arduino quét qua các hàng và cột một cách hiệu quả. Hãy đảm bảo kiểm tra kỹ các kết nối để chắc chắn rằng mỗi chân tương ứng đúng với hàng hoặc cột được chỉ định. Trong video, các cấu hình đấu dây thay thế được thảo luận ngắn gọn (trong video tại 01:15). Nếu bạn chọn đấu dây khác, chỉ cần cập nhật số chân trong mã cho phù hợp.

Ví dụ mã và hướng dẫn chi tiết

Trong mã, chúng ta bắt đầu bằng việc bao gồm thư viện Keypad và định nghĩa bố cục của bàn phím. Các hàng và cột được thiết lập bằng mảng, trong đó rowPins ánh xạ đến các chân kỹ thuật số được kết nối với các hàng và colPins ánh xạ đến các cột.

const byte ROWS = 4; //bốn hàng
const byte COLS = 4; //bốn cột
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

Trong đoạn trích này, chúng ta định nghĩa số hàng và số cột, cũng như bố cục ký tự của các phím. Thiết lập này rất quan trọng để xác định phím nào đang được nhấn dựa trên hàng và cột được kích hoạt.

void setup(){
  Serial.begin(9600);
}

Hàm setup khởi tạo giao tiếp nối tiếp ở tốc độ baud 9600. Điều này quan trọng để gửi dữ liệu phím nhấn đến màn hình nối tiếp để gỡ lỗi và xác minh.

void loop(){
  char key = keypad.getKey();
  if (key){
    Serial.println(key);
  } 
  if (key =='4'){
    Serial.println("Phím 4 đang được nhấn");
  }
}

Trong hàm loop, chúng ta liên tục kiểm tra phím được nhấn bằng keypad.getKey(). Nếu một phím được nhấn, nó sẽ in giá trị phím ra màn hình nối tiếp. Ngoài ra, nếu phím '4' được nhấn, nó sẽ in một thông báo cụ thể cho biết phím '4' đã được kích hoạt. Phần mã này cho phép tương tác theo thời gian thực dựa trên đầu vào của người dùng.

Trình diễn / Điều gì sẽ xảy ra

Khi mọi thứ đã được thiết lập và mã được tải lên Arduino của bạn, bạn sẽ thấy các phím được nhấn hiển thị trên Màn hình nối tiếp. Nếu bạn nhấn phím '4', thông báo "Phím 4 đang được nhấn" sẽ xuất hiện, xác nhận rằng đầu vào đã được phát hiện thành công. Hãy cẩn thận với các lỗi thường gặp, chẳng hạn như đầu vào nổi hoặc đấu dây sai, có thể dẫn đến các lần đọc sai (trong video tại 02:30).

Mốc thời gian video

  • 00:00 - Giới thiệu về bàn phím
  • 01:15 - Hướng dẫn đấu dây
  • 02:30 - Giải thích mã và trình diễn

Hình ảnh

4x4 soft keypdad back view
4x4 soft keypdad back view
4x4 soft keypdad
4x4 soft keypdad
4x4 soft keypdad connector
4x4 soft keypdad connector
4x4 soft keypdad
4x4 soft keypdad
Arduino wiring for 4x4 soft keypad
Arduino wiring for 4x4 soft keypad
41-Resources for this code
Ngôn ngữ: C++
/*
 * Original source: https://playground.arduino.cc/Code/Keypad
 * This is the Arduino code for a 4x4 keypad.
 * Watch the video for details and demo: http://youtu.be/qIDzzG2LUtg
 * 
 * Written by Ahmad Nejrabi for Robojax Video channel: www.Robojax.com
 * Date: December 18, 2017, 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
 * 
 */
/* @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 = 4; //four columns
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6,7,8,9}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
}
  
void loop(){
  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'){
    Serial.println("Key 4 is pressed");
  }
}

Nghĩ bạn có thể cần

Tài nguyên & tài liệu tham khảo

Chưa có tài nguyên nào.

Tập tin📁

Thư viện Arduino (tệp nén)