Arduino Nano - Teclado - Relé

Este tutorial ensina você a usar um teclado e o Arduino Nano para controlar um relé. Quando o usuário digita a senha correta no teclado, o Arduino Nano ativa o relé.

O tutorial também traz o código do Arduino Nano que ativa um relé por um determinado tempo e depois o desativa sem usar a função delay(). Além disso, o código do Arduino Nano é capaz de lidar com várias senhas.

Ao conectar o relé a uma Fechadura Eletromagnética, uma Fechadura Solenoide, um Atuador Linear, um Elemento de Aquecimento, uma Bomba ou um Ventilador ... Podemos controlá-los usando um teclado.

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×Relé
1×Fios Jumper
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.

Sobre o Teclado e o Relé

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

Diagrama de Ligação

The wiring diagram between Arduino Nano and keypad relay

This image is created using Fritzing. Click to enlarge image

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

Código Arduino Nano - liga o relé se a senha estiver correta

Se a senha estiver correta, o código a seguir ativará um relé.

/* * 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-relay */ #include <Keypad.h> const int ROW_NUM = 4; //four rows const int COLUMN_NUM = 3; //four columns const int RELAY_PIN = 2; // The Arduino Nano pin connected to the IN pin of relay module const byte pin_rows[ROW_NUM] = {10, 9, 8, 7}; // The Arduino Nano pin connected to the row pins of the keypad const byte pin_column[COLUMN_NUM] = {6, 5, 4}; // The Arduino Nano pin connected to the column pins of the keypad char key_layout[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; 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; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); } 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! Turning ON relay"); digitalWrite(RELAY_PIN, HIGH); } 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 } } }

Passos Rápidos

  • Conecte um cabo USB ao Arduino Nano e ao 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 instalar a biblioteca keypad.
Arduino Nano keypad library
  • Pesquise por “ezOutput” e localize a biblioteca ezOutput da ArduinoGetStarted.
  • Pressione o botão Install para instalar a biblioteca ezOutput.
Arduino Nano output library
  • Copie o código e abra-o na Arduino IDE.
  • Em seguida, pressione o botão Upload na Arduino IDE para compilar e fazer o upload do código para o Arduino Nano.
Arduino IDE Upload Code
  • Digite 1234 seguido da tecla # e depois 9765 seguido da tecla #.
  • Confira o resultado no Serial Monitor e observe o estado do relé.
∞
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! Turning ON relay
Ln 11, Col 1
Arduino Nano on COM15
2

Explicação do Código

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

  • Se a tecla pressionada não for uma das duas teclas especiais, ela é acrescentada à input string.
  • Se a tecla pressionada for *, a input string é limpa. Isso pode ser usado para iniciar ou reiniciar a digitação da senha.
  • Se a tecla pressionada for #:
    • O Arduino Nano verifica a senha digitada comparando a input string com as senhas predefinidas. Se ela corresponder a uma das senhas predefinidas, o relé é ligado.
    • Independentemente de a senha estar correta ou não, a input string é limpa para a próxima digitação.

Código Arduino Nano - liga um relé por um período de tempo se a senha estiver correta

Se a senha estiver correta, o relé será ligado por 5 segundos. Após esse período de tempo, o relé será desativado.

/* * 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-relay */ #include <Keypad.h> #include <ezOutput.h> #define RELAY_ON_TIME 5000 // in milliseconds const int ROW_NUM = 4; //four rows const int COLUMN_NUM = 3; //four columns const int RELAY_PIN = 2; // The Arduino Nano pin connected to the IN pin of relay module const byte pin_rows[ROW_NUM] = {10, 9, 8, 7}; // The Arduino Nano pin connected to the row pins of the keypad const byte pin_column[COLUMN_NUM] = {6, 5, 4}; // The Arduino Nano pin connected to the column pins of the keypad char key_layout[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); ezOutput relay(RELAY_PIN); 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; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed relay.low(); } void loop() { relay.loop(); // MUST call the loop() function first 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! Turning ON relay"); relay.low(); // set low before making a high pulse relay.pulse(RELAY_ON_TIME); // turn on relay in RELAY_ON_TIME duration and then turn off } 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 } } }

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!