//Curso: Automação com Arduino
//Pasta: C:/AcDc
//2023_04_27_11ª Aula
//Programa: 2023_04_18_Aula_11C (Teclado Matricial)
//Exercício: Senha Eletrônica - Exemplo da aula dado pelo professor
//Usando Teclado Matricial 4 x 3
#include <Keypad.h>
char caractere;
char teclas;
//No wokwi não tinha teclado 4x3 então comentei abaixo e ....
/*char teclas[4][3] = { //4 Linhas x 3 Colunas
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
*/
// ....inclui abaixo o 4x4
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
// byte linha[4]={8,7,6,5};
byte linha[4]={10,8,7,6};
//byte coluna[3]={4,3,2};Keypad teclado(makeKeymap(teclas),linha,coluna,4,3);
byte coluna[4]={5,4,3,2};Keypad teclado(makeKeymap(teclas),linha,coluna,4,4);
int N = 0; //Vai contar os dígitos da senha (Numero de x que digitei caractere)
boolean E = 0; //Fica zero enqto eu não errar nada, se errar coloca o E=1
char senha [4]= {'5', '8','3','1'};
void setup() {
Serial.begin(9600);
pinMode(11,OUTPUT);// Led Vermelho
pinMode(12,OUTPUT); //lED Verde
pinMode(13,OUTPUT); //relé
digitalWrite(12,HIGH);
}
void loop() {
//caractere=teclado.getKey();
teclas=teclado.getKey();
//if(caractere) {
if(teclas) {
digitalWrite(9,HIGH);
delay(1000);
digitalWrite(9,LOW);
//Serial.println(caractere);
Serial.println(teclas);
//if (caractere!=senha[N]){
if (teclas!=senha[N]){
E=1;}
N++;
if (N==4&& E==1){
delay (1000);
//digitalWrite(10,HIGH);
digitalWrite(9,HIGH);
delay (2000);
//digitalWrite(10,LOW);
digitalWrite(9,LOW);
N=0;
E=0;}
if (N==4&&E==0){
delay (1000);
digitalWrite(11,HIGH);
delay(2000);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
delay(2000);
digitalWrite(12,HIGH);
delay(2000);
N=0;}
}
}