Tìm kiếm mã

Mã Arduino và Video cho Bàn phím Bốn Phím

Mã Arduino và Video cho Bàn phím Bốn Phím

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng bàn phím bốn phím với Arduino. Dự án này đặc biệt hữu ích cho các ứng dụng cần nhiều nút bấm nhưng muốn giảm thiểu số lượng dây sử dụng. Bằng cách kết nối bàn phím theo một cách cụ thể, chúng ta có thể thiết lập hoạt động chỉ với năm dây thay vì tám dây.

4 key flixable keypad

Bàn phím bốn phím đơn giản hóa quá trình đi dây vì nó có một kết nối chung giúp giảm tổng số dây cần thiết. Mỗi phím được kết nối với Arduino thông qua các chân được chỉ định, cho phép tương tác và điều khiển dễ dàng. Hướng dẫn này sẽ bao gồm cách đi dây, mã code và hành vi dự kiến của bàn phím để bạn có thể sao chép dự án thành công (trong video ở phút 02:30).

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

Các thành phần chính của dự án này bao gồm bàn phím bốn phím và bo mạch Arduino. Bàn phím chứa bốn nút bấm và mỗi nút kết nối với Arduino qua hai dây—một dây chung và một dây riêng cho mỗi nút. Thiết lập này cho phép kết nối đơn giản trong khi giảm thiểu sự lộn xộn.

Arduino diễn giải các lần nhấn nút bằng cách sử dụng đầu vào kỹ thuật số, dựa vào điện trở kéo lên nội bộ để đảm bảo kết quả đọc ổn định. Khi một nút được nhấn, nó kết nối chân tương ứng với đất, cho phép Arduino phát hiện sự thay đổi trạng thái.

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

Nhà sản xuấtGeneric
Số bộ phậnBàn phím 4 phím
Điện áp Logic/IO5 V
Điện áp cung cấp5 V
Số lượng phím4
Loại chân chungTích cực thấp
Điện trở nút bấm1 kΩ (điển hình)
Bao bìPCB linh hoạt
Ghi chú / biến thểCó sẵn trong nhiều bố cục

  • Mỗi nút yêu cầu hai kết nối: một cho nút và một cho đất chung.
  • Sử dụng điện trở kéo lên nội bộ giúp đơn giản hóa việc đi dây và giảm số lượng linh kiện.
  • Đảm bảo chân chung được kết nối với đất để hoạt động chính xác.
  • Chống nhiễu (debounce) các lần nhấn nút trong phần mềm để tránh đọc sai.
  • Kiểm tra chức năng nút bằng cách in đơn giản ra serial để phản hồi.

Hướng dẫn đi dây

Arduino wiring for 4 key keypad
Arduino wiring for 4 key keypad

Để đi dây bàn phím bốn phím với Arduino, hãy làm theo các bước sau:

  • Kết nối dây phím đầu tiên với chân 2 trên Arduino.
  • Kết nối dây phím thứ hai với chân 3.
  • Kết nối dây phím thứ ba với chân 4.
  • Kết nối dây phím thứ tư với chân 5.
  • Kết nối dây chung từ bàn phím với chân đất trên Arduino.

Đảm bảo kết nối chắc chắn từng dây để tránh các kết nối lỏng lẻo. Nếu bạn gặp sự cố, hãy kiểm tra lại từng kết nối so với các chân được gán trong video (trong video ở phút 04:15).

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

Đoạn mã sau khởi tạo các chân cho bàn phím và đặt chúng làm đầu vào:

#define key1 2 //kết nối dây 1 với chân 2
#define key2 3 //kết nối dây 2 với chân 3
#define key3 4 //kết nối dây 3 với chân 4
#define key4 5 //kết nối dây 4 với chân 5

void setup() {
 Serial.begin(9600);
 pinMode(key1, INPUT_PULLUP); // đặt chân làm đầu vào
 pinMode(key2, INPUT_PULLUP); // đặt chân làm đầu vào
 pinMode(key3, INPUT_PULLUP); // đặt chân làm đầu vào
 pinMode(key4, INPUT_PULLUP); // đặt chân làm đầu vào   
}

Trong mã trên, mỗi phím được định nghĩa với số chân tương ứng. Chế độ INPUT_PULLUP đảm bảo các chân đọc mức cao khi không được nhấn, giúp đơn giản hóa việc phát hiện nhấn nút.

Hàm loop đọc trạng thái của từng phím và in thông báo tương ứng khi được nhấn:

void loop() {
  int key1S = digitalRead(key1); // đọc xem key1 có được nhấn không
  int key2S = digitalRead(key2); // đọc xem key2 có được nhấn không
  int key3S = digitalRead(key3); // đọc xem key3 có được nhấn không
  int key4S = digitalRead(key4); // đọc xem key4 có được nhấn không 

  if(!key1S) {
    Serial.println("phím 1 được nhấn");
  }
  if(!key2S) {
    Serial.println("phím 2 được nhấn");
  }
  // Mã bổ sung cho key3 và key4...
  delay(100);
}

Đoạn mã này kiểm tra trạng thái của từng phím và in thông báo ra màn hình serial khi một phím được nhấn. delay(100) cho phép hiệu ứng chống nhiễu, đảm bảo các lần nhấn liên tiếp không được ghi nhận quá nhanh.

Trình diễn / Điều mong đợi

Sau khi đi dây và tải mã lên Arduino thành công, bạn sẽ thấy màn hình serial hiển thị thông báo cho biết phím nào được nhấn. Nhấn phím một sẽ xuất ra "phím 1 được nhấn" và tương tự cho các phím khác. Nếu thông báo không xuất hiện, hãy kiểm tra lại dây nối và đảm bảo dây chung được kết nối với đất.

Hãy cẩn thận với các kết nối bị đảo ngược vì điều này có thể dẫn đến hành vi không mong muốn. Đảm bảo các chân được sử dụng khớp với những gì được định nghĩa trong mã của bạn (trong video ở phút 06:45).

Mốc thời gian video

  • 00:00 - Giới thiệu
  • 02:30 - Giải thích về đi dây
  • 04:15 - Gán chân
  • 06:45 - Kiểm tra bàn phím

Hình ảnh

4 key flixable keypad
4 key flixable keypad
Arduino wiring for 4 key keypad
Arduino wiring for 4 key keypad
50-Arduino Code for 4 key keypad
Ngôn ngữ: C++
++
/*
 * This is the Arduino code for a 4-key keypad.
 * Watch the video for details and demo: https://youtu.be/BiOh_Z2N7kk
 * 
 * Written by Ahmad Shamshiri for the Robojax Video channel,
get code, wiring diagram and resources at  www.Robojax.com/RJT37
 * Date: December 28, 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
// Recorded December 28, 2017 for Robojax.com

#define key1 2 //connect wire 1 to pin 2
#define key2 3 //connect wire 2 to pin 3
#define key3 4 //connect wire 3 to pin 4
#define key4 5 //connect wire 4 to pin 5

void setup() {
 Serial.begin(9600);
 pinMode(key1, INPUT_PULLUP);// set pin as input
 pinMode(key2, INPUT_PULLUP);// set pin as input
 pinMode(key3, INPUT_PULLUP);// set pin as input
 pinMode(key4, INPUT_PULLUP);// set pin as input   
}

void loop() {
  int key1S = digitalRead(key1);// read if key1 is pressed
  int key2S = digitalRead(key2);// read if key2 is pressed
  int key3S = digitalRead(key3);// read if key3 is pressed
  int key4S = digitalRead(key4);// read if key4 is pressed 
 // Code written for Robojax.com video tutorial
     if(!key1S){
      Serial.println("key 1 is pressed");
     }
     if(!key2S){
      Serial.println("key 2 is pressed");
     }
     if(!key3S){
      Serial.println("key 3 is pressed");
     }
     if(!key4S){
      Serial.println("key 4 is pressed");
     }          
     delay(100);
}

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)