Olá pessoal, já vimos como utilizar o teclado matricial da forma mais simples controlando um LED, agora vamos utilizar este mesmo teclado para acionar um rele. Para este projeto será incluído uma nova biblioteca a "Password.h" que tem como função o controle de strings, validando-as. Por default o senha deste projeto será 1234, mas pode ser modificada (fica a seu critério). Aqui foi utilizado para acionar um rele, mas pode ser para acionar uma solenoide por exemplo, ou para outros fins. Os códigos serão todos comentados para melhor entendimento, podendo ser retirados após a compreensão de cada linha. Bom trabalho !!!
COMPONENTES NECESSÁRIOS
1 Arduino Uno R3
1 Shield rele
1 Teclado matricial 4X4
Fios jumpers
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB. Agora, conecte o shield rele e o teclado matricial como mostra a figura abaixo:
FAZENDO O DOWNLOAD E IMPORTANDO A BIBLIOTECA DO PASSWORD E KEYPAD
1) Acesse o link https://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;
2) Faça o download dos arquivos Password e Keypad;
3) Descompacte os arquivos;
4) Agora entre no diretório (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie os arquivos descompactados nesta pasta;
5) Pronto para utilizar;
AGORA VAMOS AO CÓDIGO
// Projeto 27 – Acionando rele via teclado matricial 4X4
#include <Password.h> // Biblioteca utilizada para controle de senha.
#include <Keypad.h> // Biblioteca para controle do teclado de matrizes.
// Senha utilizada para acionamento do rele.
Password password = Password( "1234" );
const byte ROWS = 4; // Quatro linhas por...
const byte COLS = 4; // Quatro colunas.
// Define o Keypad (mapa do circuito 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] = {12,11,10,5};
// Cria um objeto Keypad.
Keypad keypad=Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup(){
pinMode(4, OUTPUT); // Define pino 4 como saída.
Serial.begin(9600); // Inicializa Serial Monitor.
keypad.addEventListener(keypadEvent);
keypad.setDebounceTime(250);
}
void loop(){
keypad.getKey();
}
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){ // Condição switch...
case PRESSED: // Se precionado algum botão...
Serial.print("Digitado: "); // Aparecera no Serial Monitor, Digitado: "X".
Serial.println(eKey); // Armazena numero digitado na variável eKey.
switch (eKey){
// Pressionando "C" confirma se a senha foi digitado corretamente.
case 'C': guessPassword();
break;
default:
password.append(eKey);
}
}
}
void guessPassword(){
// Informa no Serial Monitor "Verificando, aguarde...".
Serial.print("Verificando, aguarde... ");
if (password.evaluate()){
// Informa no Serial Monitor "Acionando rele...".
Serial.println("Acionando rele... ");
digitalWrite(4, HIGH); // Ativa o rele.
delay(2000); // Rele fica acionado por 2 segundos e depois...
digitalWrite(4, LOW); // Desativa o rele.
password.reset(); // Apaga a senha.
}else{
digitalWrite(4, LOW);
Serial.println("Senha Invalida !");
password.reset(); // Apaga a senha.
}
}
Para confirmar se está tudo certo aperto o botão Verify/Upload. Se estiver correto você pode abrir o Serial Monitor em Tools, Serial Monitor ou selecionando simultaneamente os botões Ctrl+Shift+M, digite a senha 1234 e aperte o botão C, pronto seu rele irá acionar por 2 segundos e depois será desativado.
IMAGEM DO SERIAL MONITOR
fonte:facacomarduino.info