/*----------------------------------------------------------------------
Aniela Joaquina Ubillus Peña 20226663
-----------------------------------------------------------------------*/
uint8_t pinesFilas[] = {13,12,11,10};
uint8_t pinesColumnas[] = {7,6,5,4};
uint8_t teclas[4][4] = {{1, 2, 3 ,'A'},
{ 4, 5, 6,'B'},
{7,8,9,'C'},
{'*',0,'#','D'}};
uint32_t clave = 0;
uint32_t tecla = 0;
uint8_t indice = 0;
uint8_t nL = 0;
uint8_t nC = 0;
char modo;
int contador=0;
void setup() {
for (int nL = 0; nL <= 3; nL++) { //inicializo filas como salidas
pinMode(pinesFilas[nL], OUTPUT);
digitalWrite(pinesFilas[nL], HIGH);
}
for (int nC = 0; nC <= 3; nC++) { //inicializo columnas como entradas
pinMode(pinesColumnas[nC], INPUT_PULLUP);
}
Serial.begin(115200);
Serial.println();
Serial.println("Por favor ingrese la clave de 6 digitos");
}
void loop() {
digitalWrite(pinesFilas[nL], LOW);//cuando se presione la tecla se mandara un cero
//primero pone una fila en 0 para verificar
for (int nC = 0; nC <= 3; nC++) {//va fila por fila verificando la columnas
if (digitalRead(pinesColumnas[nC]) == LOW)
{
tecla = teclas[nL][nC];
if(tecla >=0 && tecla <=9) {
if(indice < 7) {
clave = clave*10 + tecla;
indice++;
Serial.println(clave);
}
}
if(clave==131175){
Serial.println("Clave correcta");
Serial.println("Se inicializó el contador... A(ascendente), B(descendente)y C(reinciciar)");
if(contador<10 && contador>=0){
if(tecla=='C'){
modo='C';
Serial.println(modo);
contador=0;
indice=0;
Serial.println("Se reinicia");
}
if (tecla=='B'){
modo='B';
Serial.println(modo);
contador--;
delay(500);
Serial.println("Modo: descendente");
}
if(tecla=='A'){
modo='A';
Serial.println(modo);
Serial.println("Modo: ascendente");
delay(500);
contador++;
}
else{
contador++;
delay(500);
}
Serial.println(contador);
delay(80);
}
if (contador==10||contador<0){
clave=0;
}
}
else if(clave>=100000){
Serial.println("Clave incorrecta");
clave=0;
indice=0;
delay(1000);
}
}
while(digitalRead(pinesColumnas[nC]) == LOW){}
}
digitalWrite(pinesFilas[nL], HIGH);//luego la pone en 1 para pasar a la siguiente
if(nL==3) {
nL=0;
}
else{
nL++;
}
//reseteo filas cuando llego a la fila 6
//si no, sigo aumentando las filas para pasar
// a la siguiente fila
}