Arduino Nano - Teclado - Servo Motor

Este tutorial ensina você a usar o Arduino Nano e um teclado para controlar um servo motor. Em detalhes:

O código do Arduino Nano pode aceitar várias senhas.

Hardware Necessário

1×Official Arduino Nano
1×Alternatively, DIYables Nano V3.0 Development Board
1×Cabo USB A para Mini-B
1×Teclado
1×Servo Motor
1×Fonte de Alimentação 5V
1×Fios Jumper
1×(Opcional) Conector de Alimentação DC
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Buy Note: For controlling multiple servo motors, use the PCA9685 16 Channel PWM Servo Driver Module to save MCU pins and simplify wiring.

Sobre o Teclado e o Servo Motor

Se você não conhece o teclado e o servo motor (incluindo pinagem, funcionamento e programação), os tutoriais a seguir podem ajudar:

Diagrama de Ligação

The wiring diagram between Arduino Nano and keypad servo motor

This image is created using Fritzing. Click to enlarge image

Observe que o diagrama de ligação mostrado acima é adequado apenas para um servo motor com baixo torque. Caso o motor vibre em vez de girar, é preciso usar uma fonte de alimentação externa para operar o servo motor. O diagrama de ligação a seguir mostra como conectar o servo motor a uma fonte de alimentação externa.

The wiring diagram between Arduino Nano and keypad servo motor

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Nano e outros componentes.

Não se esqueça de conectar o GND da fonte externa ao GND do Arduino.

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

Se a senha estiver correta, o servo motor será posicionado em 90° por 5 segundos. Após esse período de tempo, ele será girado para 0°.

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-keypad-servo-motor */ #include <Keypad.h> #include <Servo.h> #define SERVO_PIN 10 // // The Arduino Nano pin connected to the servo motor Servo servo; // servo motor const int ROW_NUM = 4; // four rows const int COLUMN_NUM = 4; // four columns const byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; // The Arduino Nano pin connected to the row pins of the keypad const byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; // The Arduino Nano pin connected to the column pins of the keypad char key_layout[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; Keypad keypad = Keypad(makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); const String password_1 = "4321"; // change your password here const String password_2 = "09876"; // 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 prev_time; 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° prev_time = 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 correct password! Rotating Servo Motor to 90°"); angle = 90; servo.write(angle); prev_time = millis(); } else { Serial.println("The incorrect password! try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } if (angle == 90 && (millis() - prev_time) > 5000) { // 5 seconds angle = 0; servo.write(angle); Serial.println("Rotating Servo Motor to 0°"); } }

Passos Rápidos

  • Conecte um cabo USB entre o Arduino Nano e o PC.
  • Abra a Arduino IDE e selecione a placa e a porta corretas.
  • Clique no ícone Libraries na barra à esquerda da Arduino IDE.
  • Pesquise por “keypad” e localize a biblioteca keypad criada por Mark Stanley e Alexander Brevig.
  • Em seguida, pressione o botão Install para concluir a instalação da biblioteca keypad.
Arduino Nano keypad library
  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para enviar o código ao Arduino Nano.
Arduino IDE Upload Code
  • Digite 12345# no teclado, seguido de 09876#.
  • Confira o Serial Monitor e observe o estado do servo motor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano' on 'COM15')
New Line
9600 baud
The incorrect password! try again The correct password! Rotating Servo Motor to 90° Rotating Servo Motor to 0°
Ln 11, Col 1
Arduino Nano on COM15
2

Explicação do Código

As senhas válidas são predefinidas no código do Arduino Nano. Uma string, chamada de input_password, é usada para armazenar a senha digitada pelos usuários. No teclado, duas teclas (* e #) têm funções especiais: limpar a senha e encerrar a senha. Quando uma tecla é pressionada:

  • Se a tecla não for uma das duas teclas especiais, ela é adicionada à input_password.
  • Se a tecla for *, a input_password é limpa. Isso pode ser usado para iniciar ou reiniciar a digitação da senha.
  • Se a tecla for #:
    • O Arduino Nano compara a input_password com as senhas predefinidas. Se ela corresponder a uma delas, o servo motor é girado para 90°.
    • Independentemente de a senha estar correta ou não, a input_password é limpa para a próxima digitação.
    • Após um tempo limite, o Arduino Nano gira o servo motor para 0°.

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!