#include <Keypad.h>
#include <Servo.h>
const byte rows = 4;
const byte colums = 4;
Servo myServo;
char Keys[rows][colums] =
{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
//Declares an array
byte pinRows[rows] = {4,3,2,0}; // R1 R2 R3 R4
byte pinColums[colums] = {6,7,9,10}; //C1 C2 C3 C4
Keypad customKeypad = Keypad( makeKeymap(Keys),pinRows , pinColums, rows, colums);
void setup() {
pinMode(0, INPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
Serial.begin(9600);
myServo.attach(12);
}
int i = 0;
int n;
char customKey[4];
char password[4] = {'1','2','3','4'};
void loop() {
Serial.println("Escriba contraseña");
i = 0;
while (i!=4){
customKey[i] = customKeypad.getKey();
if(customKey[i]){
Serial.print("*");
if (customKey[i] == password[i]){
n=n+1;
}
i = i+1;
} //El if es necesario ya que dentro tiene que ir el i++,
// en caso contrario el bucle siemre se ejecutara auqnue
//no llegue ninguna tecla ya que la funcion getKey siempre esta cogiendo valores
};
if (n==4){
Serial.print("\nLa contraseña es correcta. Acceso sistema\n");
myServo.write(0);
delay(1000);
myServo.write(90);
delay(1000);
myServo.write(180);
}
else{
Serial.println("\nLa contraseña es incorrecta\n");
n=0;
}
//Reestablecemos el while para que vuelva a entrar al bucle,
//si no estará continuamente imprimiendo valores
}