#include <Keypad.h>
#include <RTClib.h>
RTC_DS1307 RTC;
int buzzerPin = 11; // establecemos el pin del buzzer
int melody[] = { // introducimos las notas de la melodía
262, 196, 196, 220, 196, 0, 247, 262
};
int noteDuration = 250; // duración de cada nota en milisegundos
const byte ROWS = 4; //Permite que funcionen los botones de izquerda a derecha
const byte COLS = 3; //Permite que funcionen los botones de arriba a abajo
char keys[ROWS][COLS] = {
{ '1', '2', '3'},
{ '4', '5', '6'},
{ '7', '8', '9'},
{ '*', '0', '#'}
}; //Asignamos los numeros a cada botón
byte colPins[COLS] = { 5, 4, 3}; // Pins connected to C1, C2, C3, C4
byte rowPins[ROWS] = { 9, 8, 7, 6 }; // Pins connected to R1, R2, R3, R4
char i [4] = {0,0,0,0}; //Declara los numeros iniciales a 0
char key = 0; //Recopila los numeros introducidos desde el teclado numérico
int j = 0; //Asignamos la variable j a "0";
int cont = 0; //Cuenta los numeros introducidos por el pad numérico
int led = 13; //Asignamos el led al pin 13
int led1 = 12; //Asignamos el led al pin 12
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
//Pasamos la matriz de las teclas, los pines de las filas, los pines de las columnas, el número de filas y columnas
void setup() {
Serial.begin(9600);
RTC.begin();
RTC.adjust(DateTime(__DATE__, __TIME__));
pinMode(led, OUTPUT); //Asignamos el led como dispositivo de salida
pinMode(led1, OUTPUT); //Asignamos el led1 como dispositivo de salida
pinMode(buzzerPin, OUTPUT); // configura el pin del buzzer como salida
}
void loop() {
while (cont < 4) { //Mientras que el contador de numeros que introducimos sea menor que 4...
char key = keypad.getKey(); //Almacena las teclas pulsadas
i[j] = key; //Almacena la posicion de las teclas pulsadas
if (key){ //Si se pulsa cualquier tecla se imprimirá por la consola el numero que le demos
Serial.print(key); //Imprime por pantalla la tecla que hemos presionado
//Serial.println(i[1]);
//Serial.println(i[2]);
//Serial.println(i[3]);
j=j+1; //Incrementa la variable de la j
cont = cont+1; //Aumenta el contardor al pulsar una tecla
}
}
if (i[0] == '0' && i[1] == '0' && i[2] == '0' && i[3] == '1'){ //Si se introduce el código 1210
digitalWrite(led, HIGH); //El led rojo se enciende
Serial.println();
Serial.println("Acceso permitido."); //Imprime por pantalla "acceso permitido"
Serial.println("Danaiel Muñoz"); //Imprime por pantalla "Nombre y apellido del usuario"
Serial.println("ID01"); //Imprime por pantalla "Número de ID"
delay (1000); //Hace una pausa de 1s
i[0]=0; //Se ponen los contadores a 0
i[1]=0; //Se ponen los contadores a 0
i[2]=0; //Se ponen los contadores a 0
i[3]=0; //Se ponen los contadores a 0
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print("Fecha: ");
Serial.print(now.day(), DEC);
Serial.print('/');
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print('/');
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.println();
//Imprimimos la hora
Serial.print("Hora: ");
Serial.print(now.hour(), DEC);
Serial.print(':');
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(':');
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(led, LOW); //El led rojo se apaga
}
else if (i[0] == '0' && i[1] == '0' && i[2] == '0' && i[3] == '2'){ //Si se introduce el código 1210
digitalWrite(led, HIGH); //El led rojo se enciende
Serial.println();
Serial.println("Acceso permitido."); //Imprime por pantalla "acceso permitido"
Serial.println("Nicolas Esquival"); //Imprime por pantalla "Nombre y apellido del usuario"
Serial.println("ID02"); //Imprime por pantalla "Número de ID"
delay (1000); //Hace una pausa de 1s
i[0]=0; //Se ponen los contadores a 0
i[1]=0; //Se ponen los contadores a 0
i[2]=0; //Se ponen los contadores a 0
i[3]=0; //Se ponen los contadores a 0
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print("Fecha: ");
Serial.print(now.day(), DEC);
Serial.print('/');
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print('/');
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.println();
//Imprimimos la hora
Serial.print("Hora: ");
Serial.print(now.hour(), DEC);
Serial.print(':');
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(':');
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(led, LOW); //El led rojo se apaga
}
else if (i[0] == '0' && i[1] == '0' && i[2] == '0' && i[3] == '3'){ //Si se introduce el código 1210
digitalWrite(led, HIGH); //El led rojo se enciende
Serial.println();
Serial.println("Acceso permitido."); //Imprime por pantalla "acceso permitido"
Serial.println("Pau Gómez"); //Imprime por pantalla "Nombre y apellido del usuario"
Serial.println("ID03"); //Imprime por pantalla "Número de ID"
delay (1000); //Hace una pausa de 1s
i[0]=0; //Se ponen los contadores a 0
i[1]=0; //Se ponen los contadores a 0
i[2]=0; //Se ponen los contadores a 0
i[3]=0; //Se ponen los contadores a 0
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print("Fecha: ");
Serial.print(now.day(), DEC);
Serial.print('/');
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print('/');
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.println();
//Imprimimos la hora
Serial.print("Hora: ");
Serial.print(now.hour(), DEC);
Serial.print(':');
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(':');
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(led, LOW); //El led rojo se apaga
}
else if (i[0] == '0' && i[1] == '0' && i[2] == '0' && i[3] == '4'){ //Si se introduce el código 1210
digitalWrite(led, HIGH); //El led rojo se enciende
Serial.println();
Serial.println("Acceso permitido."); //Imprime por pantalla "acceso permitido"
Serial.println("Victor Muñoz"); //Imprime por pantalla "Nombre y apellido del usuario"
Serial.println("ID04"); //Imprime por pantalla "Número de ID"
delay (1000); //Hace una pausa de 1s
i[0]=0; //Se ponen los contadores a 0
i[1]=0; //Se ponen los contadores a 0
i[2]=0; //Se ponen los contadores a 0
i[3]=0; //Se ponen los contadores a 0
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print("Fecha: ");
Serial.print(now.day(), DEC);
Serial.print('/');
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print('/');
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.println();
//Imprimimos la hora
Serial.print("Hora: ");
Serial.print(now.hour(), DEC);
Serial.print(':');
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(':');
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(led, LOW); //El led rojo se apaga
}
else if (i[0] == '0' && i[1] == '0' && i[2] == '0' && i[3] == '5'){ //Si se introduce el código 1210
digitalWrite(led, HIGH); //El led rojo se enciende
Serial.println();
Serial.println("Acceso permitido."); //Imprime por pantalla "acceso permitido"
Serial.println("Aleix Simón"); //Imprime por pantalla "Nombre y apellido del usuario"
Serial.println("ID05"); //Imprime por pantalla "Número de ID"
delay (1000); //Hace una pausa de 1s
i[0]=0; //Se ponen los contadores a 0
i[1]=0; //Se ponen los contadores a 0
i[2]=0; //Se ponen los contadores a 0
i[3]=0; //Se ponen los contadores a 0
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print("Fecha: ");
Serial.print(now.day(), DEC);
Serial.print('/');
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print('/');
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.println();
//Imprimimos la hora
Serial.print("Hora: ");
Serial.print(now.hour(), DEC);
Serial.print(':');
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(':');
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(led, LOW); //El led rojo se apaga
}
else if (i[0] == '0' && i[1] == '0' && i[2] == '0' && i[3] == '6'){ //Si se introduce el código 1210
digitalWrite(led, HIGH); //El led rojo se enciende
Serial.println();
Serial.println("Acceso permitido."); //Imprime por pantalla "acceso permitido"
Serial.println("Jiabo Zhou"); //Imprime por pantalla "Nombre y apellido del usuario"
Serial.println("ID06"); //Imprime por pantalla "Número de ID"
delay (1000); //Hace una pausa de 1s
i[0]=0; //Se ponen los contadores a 0
i[1]=0; //Se ponen los contadores a 0
i[2]=0; //Se ponen los contadores a 0
i[3]=0; //Se ponen los contadores a 0
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print("Fecha: ");
Serial.print(now.day(), DEC);
Serial.print('/');
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print('/');
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.println();
//Imprimimos la hora
Serial.print("Hora: ");
Serial.print(now.hour(), DEC);
Serial.print(':');
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(':');
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(led, LOW); //El led rojo se apaga
}
else if (i[0] == '0' && i[1] == '0' && i[2] == '0' && i[3] == '7'){ //Si se introduce el código 1210
digitalWrite(led, HIGH); //El led rojo se enciende
Serial.println();
Serial.println("Acceso permitido."); //Imprime por pantalla "acceso permitido"
Serial.println("Joel Escolíes"); //Imprime por pantalla "Nombre y apellido del usuario"
Serial.println("ID07"); //Imprime por pantalla "Número de ID"
delay (1000); //Hace una pausa de 1s
i[0]=0; //Se ponen los contadores a 0
i[1]=0; //Se ponen los contadores a 0
i[2]=0; //Se ponen los contadores a 0
i[3]=0; //Se ponen los contadores a 0
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print("Fecha: ");
Serial.print(now.day(), DEC);
Serial.print('/');
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print('/');
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.println();
//Imprimimos la hora
Serial.print("Hora: ");
Serial.print(now.hour(), DEC);
Serial.print(':');
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(':');
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(led, LOW); //El led rojo se apaga
}
else if (i[0] == '0' && i[1] == '0' && i[2] == '0' && i[3] == '8'){ //Si se introduce el código 1210
digitalWrite(led, HIGH); //El led rojo se enciende
Serial.println();
Serial.println("Acceso permitido."); //Imprime por pantalla "acceso permitido"
Serial.println("Joel Olmo"); //Imprime por pantalla "Nombre y apellido del usuario"
Serial.println("ID08"); //Imprime por pantalla "Número de ID"
delay (1000); //Hace una pausa de 1s
i[0]=0; //Se ponen los contadores a 0
i[1]=0; //Se ponen los contadores a 0
i[2]=0; //Se ponen los contadores a 0
i[3]=0; //Se ponen los contadores a 0
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print("Fecha: ");
Serial.print(now.day(), DEC);
Serial.print('/');
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print('/');
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.println();
//Imprimimos la hora
Serial.print("Hora: ");
Serial.print(now.hour(), DEC);
Serial.print(':');
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(':');
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(led, LOW); //El led rojo se apaga
}
else if (i[0] == '0' && i[1] == '0' && i[2] == '0' && i[3] == '9'){ //Si se introduce el código 1210
digitalWrite(led, HIGH); //El led rojo se enciende
Serial.println();
Serial.println("Acceso permitido."); //Imprime por pantalla "acceso permitido"
Serial.println("Joel Gonzalez"); //Imprime por pantalla "Nombre y apellido del usuario"
Serial.println("ID09"); //Imprime por pantalla "Número de ID"
delay (1000); //Hace una pausa de 1s
i[0]=0; //Se ponen los contadores a 0
i[1]=0; //Se ponen los contadores a 0
i[2]=0; //Se ponen los contadores a 0
i[3]=0; //Se ponen los contadores a 0
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print("Fecha: ");
Serial.print(now.day(), DEC);
Serial.print('/');
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print('/');
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.println();
//Imprimimos la hora
Serial.print("Hora: ");
Serial.print(now.hour(), DEC);
Serial.print(':');
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(':');
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(led, LOW); //El led rojo se apaga
}
else if (i[0] == '0' && i[1] == '0' && i[2] == '1' && i[3] == '0'){ //Si se introduce el código 1210
digitalWrite(led, HIGH); //El led rojo se enciende
Serial.println();
Serial.println("Acceso permitido."); //Imprime por pantalla "acceso permitido"
Serial.println("Julio César"); //Imprime por pantalla "Nombre y apellido del usuario"
Serial.println("ID10"); //Imprime por pantalla "Número de ID"
delay (1000); //Hace una pausa de 1s
i[0]=0; //Se ponen los contadores a 0
i[1]=0; //Se ponen los contadores a 0
i[2]=0; //Se ponen los contadores a 0
i[3]=0; //Se ponen los contadores a 0
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print("Fecha: ");
Serial.print(now.day(), DEC);
Serial.print('/');
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print('/');
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.println();
//Imprimimos la hora
Serial.print("Hora: ");
Serial.print(now.hour(), DEC);
Serial.print(':');
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(':');
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(led, LOW); //El led rojo se apaga
}
else{ //En el caso de que no se cumpla las condiciones anteriores...
Serial.println();
Serial.println("Acceso denegado, introduzca la contraseña de nuevo:"); //Imprime por pantalla "acceso denegado"
digitalWrite(led1, HIGH);
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print("Fecha: ");
Serial.print(now.day(), DEC);
Serial.print('/');
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print('/');
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.println();
//Imprimimos la hora
Serial.print("Hora: ");
Serial.print(now.hour(), DEC);
Serial.print(':');
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(':');
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
for (int i=250; i<=250; i=i+120)
tone (buzzerPin, i, 1024); // El buzzer comienza a emitir sonidos
delay (200); // Hace una pausa de 200ms
noTone (buzzerPin); // EL buzzer deja de emitir sonidos
}
delay(1000);
digitalWrite(led1, LOW);
cont = 0; //Se ponen los contadores a 0
j = 0; //Se ponen los contadores a 0
key = 0; //Se ponen los contadores a 0
}