Ligando rele com teclado matrix

 Ola pessoal neste próximo projeto estaremos mostrando como acionar um modulo rele com 4 canais utilizando um teclado matricial ou Matrix, que e aquele teclado tipo membrana fininho que pode ser colado em uma superfície lisa. Por se tratar de um projeto que utiliza reles, sera possível utiliza-lo em uma ampla gama de projetos que utilizam alta tensão (110v)ou(220v) ,como acionamento de motores lampadas, ventiladores etc..

OBS: caso utilize alta tensão tome cuidado para não tomar choques elétricos pois pode ser perigoso. E sempre bom contactar um eletricista nestes casos.


Vamos agora as etapas de integração do teclado com o Arduíno.
Primeiramente terá de baixar a biblioteca Keypad que é onde estão os arquivos necessários para seu funcionamento Biblioteca Keypad .
Apos baixar,descompacte o arquivo ZIP e copie para pasta libraires que esta dentro da pasta Arduíno em Arquivos e programas.

Para este projeto iremos precisar de 
1x arduino.
1x teclado matrix com 16 teclas.
1x Modulo Rele 4 canais.(pode ser usado também reles de 1 ou 2 canais para isso basta usar uma protoboard  para alimenta-los)
8x fios jumpers macho x macho.
6x fios jumpers macho x femea.



Conexões do teclado com Arduíno;




Conexões do Rele com Arduíno;



O teclado terá os seguintes comandos;
Tecla 1 -> liga 1° rele.
Tecla 2 -> liga 2° rele.
Tecla 3 -> liga 3° rele.
Tecla 4 -> liga 4° rele.
Tecla 5 -> desliga 1° rele.
Tecla 6 -> desliga 2° rele.
Tecla 7 -> desliga 3° rele.
Tecla 8 -> desliga 4° rele.
Tecla (*) -> liga todos os reles.
Tecla (#) -> desliga todos os reles.



Veja o vídeo.









Copie o código fonte abaixo para seu Arduíno.








//-----------------------------------------Inicio do código-------------------------------------//








#include <Keypad.h>  // Biblioteca Keypad.





const byte ROWS = 4;  // Definição das linhas .


const byte COLS = 4; //  Definição das colunas.



// Define o Keypad (mapa do teclado).

char keys[ROWS][COLS] = {

  {'1','2','3','A'},

  {'4','5','6','B'},

  {'7','8','9','C'},

  {'*','0','#','D'}

};



// Conecta o teclado matricial em linha 0, linha 1, linha 2, linha 3 e linha 4 dos pinos do arduino.

byte rowPins[ROWS] = { 9, 8, 7, 6 };



// Conecta o teclado matricial em coluna 0, coluna 1, coluna 2, coluna 3 e coluna 4 do arduino.

byte colPins[COLS] = { 5,4,3,2 };



// Cria um objto Keypad.

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );





//-------------Variaveis dos reles-------------//

#define Rele1 10  

#define Rele2 11

#define Rele3 12

#define Rele4 13







void setup()

{

  //---------Define rele como saida-----------------//

  pinMode(Rele1,OUTPUT); 

  pinMode(Rele2,OUTPUT);

  pinMode(Rele3,OUTPUT);

  pinMode(Rele4,OUTPUT);

  // Define o pino 13 como sendo de saída.

  //digitalWrite(Rele1, HIGH);  // incializa com o led ligado.

  Serial.begin(9600);  // Inicia o Serial Monitor.

}



void loop()

{

  char key = kpd.getKey();

  if(key)  // CVerifica se um botão foi precionado.

  {

    switch (key)

    {

      case '1':  // Caso seja precionado botao 1.

        digitalWrite(Rele1, HIGH);  // o rele 1 liga.

        break;  // Parada, aguardando precionar outro botão.

        case '2':  

        digitalWrite(Rele2, HIGH);  

        break;

        case '3':

        digitalWrite(Rele3, HIGH); 

        break;

        case '4':

        digitalWrite(Rele4, HIGH); 

        break;

        case '5':

        digitalWrite(Rele1, LOW);

        break;

        case '6':

        digitalWrite(Rele2, LOW);

        break;

        case '7':

        digitalWrite(Rele3, LOW);

        break;

        case '8':

        digitalWrite(Rele4, LOW);

        break;

        //------Se (*) for pressionado desliga os 4 reles---//

         case '*':

        digitalWrite(Rele1, HIGH);

        digitalWrite(Rele2, HIGH);

        digitalWrite(Rele3, HIGH);

        digitalWrite(Rele4, HIGH);

        break;

         //------Se (#) for pressionado liga os 4 reles---//

         case '#':

        digitalWrite(Rele1, LOW);

        digitalWrite(Rele2, LOW);

        digitalWrite(Rele3, LOW);

        digitalWrite(Rele4, LOW);

        break;

        default:

        Serial.println(key);

    }

  }

}



//-----------------------------------------Fim do código-------------------------------------//


5 comentários:

  1. Parabéns projeto maravilhoso mas muito bacana gostei mesmo

    ResponderExcluir
  2. Este comentário foi removido pelo autor.

    ResponderExcluir
  3. Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Placa:"Arduino Uno"





















    In file included from C:\Users\thale\OneDrive\Documentos\Arduino\teclado\teclado.ino:1:0:

    C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\Keyboard\src/Keyboard.h:29:2: warning: #warning "Using legacy HID core (non pluggable)" [-Wcpp]

    #warning "Using legacy HID core (non pluggable)"

    ^~~~~~~

    teclado:55:1: error: 'Keypad' does not name a type

    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

    ^~~~~~

    C:\Users\thale\OneDrive\Documentos\Arduino\teclado\teclado.ino: In function 'void loop()':

    teclado:105:14: error: 'kpd' was not declared in this scope

    char key = kpd.getKey();

    ^~~

    C:\Users\thale\OneDrive\Documentos\Arduino\teclado\teclado.ino: In function 'void setup()':

    teclado:224:6: error: redefinition of 'void setup()'

    void setup()

    ^~~~~

    C:\Users\thale\OneDrive\Documentos\Arduino\teclado\teclado.ino:77:6: note: 'void setup()' previously defined here

    void setup()

    ^~~~~

    C:\Users\thale\OneDrive\Documentos\Arduino\teclado\teclado.ino: In function 'void loop()':

    teclado:248:6: error: redefinition of 'void loop()'

    void loop()

    ^~~~

    C:\Users\thale\OneDrive\Documentos\Arduino\teclado\teclado.ino:101:6: note: 'void loop()' previously defined here

    void loop()

    ^~~~

    teclado:252:14: error: 'kpd' was not declared in this scope

    char key = kpd.getKey();

    ^~~

    exit status 1

    'Keypad' does not name a type



    Este relatório teria mais informações com
    "Mostrar a saida detalhada durante a compilação"
    opção pode ser ativada em "Arquivo -> Preferências"


    Como resolvo isso ?

    ResponderExcluir