Arduino - Teclado - Servo Motor

Neste tutorial, vamos aprender como usar um teclado, um servo motor e o Arduino juntos:

Sobre o Teclado e o Servo Motor

Se você não conhece o teclado e o servo motor (pinagem, como funciona, como programar...), aprenda sobre eles nos seguintes tutoriais:

Diagrama de Ligação

Diagrama de ligação do Arduino com teclado e servo motor

This image is created using Fritzing. Click to enlarge image

Código Arduino - gira o Servo Motor se a senha estiver correta

O código abaixo gira o servo motor para 90° por 5 segundos se a senha estiver correta. Após 5 segundos, ele gira o servo motor para 0°.

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/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°"); } }

Passos Rápidos

  • Conecte o Arduino ao PC por meio do cabo USB
  • Abra o Arduino IDE, selecione a placa e a porta corretas
  • Vá até o ícone Libraries na barra esquerda do Arduino IDE.
  • Pesquise “keypad” e, em seguida, encontre a biblioteca keypad de Mark Stanley, Alexander Brevig
  • Clique no botão Install para instalar a biblioteca keypad.
Biblioteca de teclado do Arduino
  • Copie o código acima e abra-o no Arduino IDE
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino
Arduino IDE - Carregar o Código
  • Pressione 12345#
  • Pressione 5642B#
  • Veja o resultado no Serial Monitor e o estado do servo motor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
The password is incorrect, try again The password is correct, rotating Servo Motor to 90° Rotating Servo Motor to 0°
Ln 11, Col 1
Arduino Uno on COM15
2

Explicação do Código

As senhas autorizadas são predefinidas no código Arduino.

Uma string é usada para armazenar a senha digitada pelos usuários, chamada de input_password. No teclado, duas teclas (* e #) são usadas para fins especiais: limpar a senha e finalizar a senha. Quando uma tecla do teclado é pressionada:

  • Se a tecla pressionada não for uma das duas teclas especiais, ela é adicionada à input_password
  • Se a tecla pressionada for *, a input_password é limpa. Você pode usá-la para começar ou recomeçar a digitar a senha
  • Se a tecla pressionada for #:
    • A input_password é comparada com as senhas predefinidas. Se corresponder a uma das senhas predefinidas, o servo motor gira para 90°.
    • Independentemente de a senha estar correta ou não, a input_password é limpa para a próxima entrada

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!