Arduino Bàn phím số Động cơ Servo

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, động cơ servo và Arduino cùng nhau:

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×động cơ servo
1×5V Power Adapter
1×DC Power Jack
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ố và động cơ servo

Nếu bạn chưa biết về bàn phím ma trận và động cơ servo (sơ đồ các chân, cách hoạt động, cách lập trình ...), hãy tìm hiểu chúng trong các bài hướng dẫn sau:

Sơ đồ đấu dây

sơ đồ đấu dây cho Arduino bàn phím ma trận và động cơ servo

This image is created using Fritzing. Click to enlarge image

Mã Arduino - quay động cơ servo nếu mật khẩu đúng

Đoạn mã dưới đây sẽ điều khiển động cơ servo quay đến 90° trong 5 giây nếu mật khẩu đúng. Sau 5 giây, nó quay động cơ servo về 0°.

/* * 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-keypad-servo-motor */ #include <Keypad.h> #include <Servo.h> #define ROW_NUM 4 // four rows #define COLUMN_NUM 4 // four columns #define SERVO_PIN A0 // // the Arduino pin, which connects to the servo motor Servo servo; // servo motor char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "ABC1234"; // change your password here const String password_2 = "5642B"; // change your password here const String password_3 = "9765"; // change your password here String input_password; int angle = 0; // the current angle of servo motor unsigned long lastTime; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed servo.attach(SERVO_PIN); servo.write(0); // rotate servo motor to 0° lastTime = millis(); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The password is correct, rotating Servo Motor to 90°"); angle = 90; servo.write(angle); lastTime = millis(); } else { Serial.println("The password is incorrect, try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } if (angle == 90 && (millis() - lastTime) > 5000) { // 5 seconds angle = 0; servo.write(angle); Serial.println("Rotating Servo Motor to 0°"); } }

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

  • Kết nối Arduino với PC bằng cáp USB
  • Mở Arduino IDE, chọn board và cổng phù hợp
  • Đ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 do Mark Stanley, Alexander Brevig
  • Nhấp nút Cài đặt để cài đặt thư viện keypad.
thư viện bàn phím ma trận cho Arduino
  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấp vào nút Tải lên trên Arduino IDE để tải mã lên Arduino
tải mã lên Arduino ide
  • Nhấn 12345#
  • Nhấn 5642B#
  • Xem kết quả trên Serial Monitor và trạng thái của động cơ servo
COM6
Send
The password is incorrect, try again The password is correct, rotating Servo Motor to 90° Rotating Servo Motor to 0°
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Giải thích mã nguồn

Các mật khẩu được cấp quyền đã được định nghĩa sẵn trong mã Arduino.

Một chuỗi được dùng để lưu mật khẩu do người dùng nhập, được gọi là input_password. Trên bàn phím, hai phím (*#) được dùng cho các mục đích đặc biệt: xóa mật khẩu và kết thúc mật khẩu. Khi một phím trên bàn phím được nhấn:

  • Nếu phím được nhấn không phải là một trong hai phím đặc biệt, nó được thêm vào input_password
  • Nếu phím được nhấn là *, input_password được làm trống. Bạn có thể dùng nó để bắt đầu hoặc nhập lại mật khẩu
  • Nếu phím được nhấn là #:
    • input_password được so sánh với các mật khẩu được định sẵn. Nếu nó khớp với một trong các mật khẩu được định sẵn, quay động cơ servo đến 90°.
    • Dù mật khẩu đúng hay không, input_password được làm trống cho lần nhập tiếp theo

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.