Arduino - Teclado - Relé

Neste tutorial, vamos aprender como usar um teclado, um relé e o Arduino juntos. Em detalhes, se um usuário digitar a senha corretamente no teclado, o Arduino liga o relé.

O tutorial também fornece o código que liga um relé por um período de tempo e depois o desliga sem usar a função delay(). O código Arduino também suporta várias senhas.

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

Arduino teclado relé

Sobre o Teclado e o Relé

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

Diagrama de Ligação

Diagrama de ligação do Arduino com teclado e relé

This image is created using Fritzing. Click to enlarge image

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

Os códigos abaixo ligam um relé se a senha estiver correta

/* * 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-relay */ #include <Keypad.h> #define RELAY_PIN A0 // the Arduino pin, which connects to the IN pin of relay #define ROW_NUM 4 // four rows #define COLUMN_NUM 4 // four columns 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; 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 password is correct, turning ON relay"); digitalWrite(RELAY_PIN, HIGH); } 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 } } }

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
  • Pesquise “ezOutput” e, em seguida, encontre a biblioteca ezOutput da ArduinoGetStarted
  • Clique no botão Install para instalar a biblioteca ezOutput.
Biblioteca de saída 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 as teclas 1234 e pressione #
  • Pressione as teclas 9765 e pressione #
  • Veja o resultado no Serial Monitor e o estado do relé
∞
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, turning ON relay
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 string. 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 string
  • Se a tecla pressionada for *, a input string é limpa. Você pode usá-la para começar ou recomeçar a digitar a senha
  • Se a tecla pressionada for #:
    • A input string é comparada com as senhas predefinidas. Se 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 entrada

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

O código abaixo liga o relé por 5 segundos se a senha estiver correta. Após 5 segundos, o relé é desligado.

/* * 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-relay */ #include <Keypad.h> #include <ezOutput.h> #define RELAY_PIN A0 // the Arduino pin, which connects to the IN pin of relay #define ROW_NUM 4 // four rows #define COLUMN_NUM 4 // four columns #define RELAY_ON_TIME 5000 // in milliseconds 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 ); ezOutput relay(RELAY_PIN); 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; 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 password is correct, 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 password is incorrect, 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!