#include <RTClib.h>
#include <Keypad.h> //libreria del teclado matricial
RTC_DS1307 rtc;
const uint8_t ROWS = 4; //nº de columnas
const uint8_t COLS = 4; //nº de filas
char daysOfTheWeek[7][12] = {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes","Sabado"};
char keys[ROWS][COLS] = {
{ '1', '2', '3', ' ' }, //permite identificar que tecla presionamos
{ '4', '5', '6', ' ' },
{ '7', '8', '9', ' ' },
{ ' ', '0', ' ', ' ' }
};
uint8_t colPins[COLS] = { 5, 4, 3, 2 }; // Pins connected to C1, C2, C3, C4
uint8_t rowPins[ROWS] = { 9, 8, 7, 6 }; // Pins connected to R1, R2, R3, R4
char i[4] = {0,0,0,0}; //declaramos una matriz de cuatro variables y las inicializamos a 0
//se almacenan los 4 digitos de la contraseña
char key = 0; //variable que contiene los digitos introducidos en el teclado
int j = 0; //variable que nos ayuda a recorrer cada posicion de la variable array i
int cont = 0;
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
int ledrojo = 10;
int ledverde = 11;
void setup() {
rtc.begin();
rtc.adjust(DateTime(__DATE__, __TIME__));
Serial.begin(9600);
pinMode(ledrojo,OUTPUT);
pinMode(ledverde,OUTPUT);
digitalWrite(ledrojo, LOW);
digitalWrite(ledverde, LOW);
if (! rtc.begin()) {
Serial.println("No se puedo encontrar el RTC");
Serial.flush();
abort();
}
}
void loop() {
while (cont < 4) { //mientras el contador de numeros introducidos sea menor de 4
char key = keypad.getKey(); //esta variable almacenara las teclas pulsadas
i[j] = key; //almacenamo las teclas pulsadas dentro del array i
if (key) { //si la variale array tiene los datos que pide
Serial.print("*");
//"encriptamos" la contraseña
j = j + 1; //incrementamos la variable j
cont = cont + 1; //incrementamos la variable contados de los numeros introducidos
}
}
digitalWrite(ledrojo, LOW);
digitalWrite(ledverde, LOW);
//1 si los numeros pulsados concuerdan con la contraseña imprimira por pantalla
if (i[0] == '1' && i[1] == '2' && i[2] == '3' && i[3] == '1' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Adrià");
Serial.println("Apellido : Jurado");
Serial.println("ID - 01");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//2
if (i[0] == '1' && i[1] == '2' && i[2] == '3' && i[3] == '2' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Oriol");
Serial.println("Apellido : Tauste");
Serial.println("ID - 02");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//3
if (i[0] == '1' && i[1] == '2' && i[2] == '3' && i[3] == '3' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Pol");
Serial.println("Apellido : Carvajal");
Serial.println("ID - 03");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//4
if (i[0] == '1' && i[1] == '2' && i[2] == '3' && i[3] == '4' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Leo");
Serial.println("Apellido : Messi");
Serial.println("ID - 04");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//5
if (i[0] == '1' && i[1] == '2' && i[2] == '3' && i[3] == '5' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Cristiano");
Serial.println("Apellido : Ronaldo");
Serial.println("ID - 05");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//6
if (i[0] == '1' && i[1] == '2' && i[2] == '3' && i[3] == '6' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Ansu");
Serial.println("Apellido : Fati");
Serial.println("ID - 06");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//7
if (i[0] == '1' && i[1] == '2' && i[2] == '3' && i[3] == '7' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Pedro");
Serial.println("Apellido : Sanchez");
Serial.println("ID - 07");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//8
if (i[0] == '1' && i[1] == '2' && i[2] == '3' && i[3] == '8' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Diego");
Serial.println("Apellido : Maradona");
Serial.println("ID - 08");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//9
if (i[0] == '1' && i[1] == '2' && i[2] == '3' && i[3] == '9' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Carrero");
Serial.println("Apellido : Blanco");
Serial.println("ID - 09");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//10
if (i[0] == '1' && i[1] == '2' && i[2] == '3' && i[3] == '0' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Paz");
Serial.println("Apellido : Padilla");
Serial.println("ID - 10");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//11
if (i[0] == '2' && i[1] == '2' && i[2] == '2' && i[3] == '2' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Kiko");
Serial.println("Apellido : Rivera");
Serial.println("ID - 11");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//12
if (i[0] == '1' && i[1] == '1' && i[2] == '1' && i[3] == '1' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Kylian");
Serial.println("Apellido : Mbappé");
Serial.println("ID - 12");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//13
if (i[0] == '3' && i[1] == '3' && i[2] == '3' && i[3] == '3' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Andrés");
Serial.println("Apellido : Iniesta");
Serial.println("ID - 13");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//14
if (i[0] == '4' && i[1] == '4' && i[2] == '4' && i[3] == '4' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Ousmane");
Serial.println("Apellido : Dembele");
Serial.println("ID - 14");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//15
if (i[0] == '5' && i[1] == '5' && i[2] == '5' && i[3] == '5' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Sergio");
Serial.println("Apellido : Ramos");
Serial.println("ID - 15");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
//16
if (i[0] == '6' && i[1] == '6' && i[2] == '6' && i[3] == '6' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Pepe");
Serial.println("Apellido : Villuela");
Serial.println("ID - 16");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
if (i[0] == '7' && i[1] == '7' && i[2] == '7' && i[3] == '7' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Jose");
Serial.println("Apellido : Pelon");
Serial.println("ID - 17");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
if (i[0] == '7' && i[1] == '7' && i[2] == '7' && i[3] == '7' )
{
Serial.println();
Serial.println("Autorizado");
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
Serial.println("Nombre : Jose");
Serial.println("Apellido : Pelon");
Serial.println("ID - 17");
DateTime now = rtc.now();
Serial.print("Fecha actual: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
digitalWrite(ledverde,HIGH);
delay(3000);
digitalWrite(ledverde,LOW);
}
else {
Serial.println();
Serial.println("contraseña incorrecta");
digitalWrite(ledrojo, HIGH);
tone(A0, 1350, 200);
delay(250);
tone(A0, 500, 200);
delay(250);
tone(A0, 1350, 200);
delay(250);
tone(A0, 100, 200);
delay(250);
tone(A0, 1350, 200);
delay(250);
tone(A0, 500, 200);
delay(250);
tone(A0, 1350, 200);
delay(250);
noTone(A0);
delay(250);
digitalWrite(ledrojo,LOW);
delay(2000);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
cont = 0;
j= 0; //para que al acabar el void loop vuelva todo a 0
key= 0;
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
keypad:R1
keypad:R2
keypad:R3
keypad:R4
keypad:C1
keypad:C2
keypad:C3
keypad:C4
rtc1:GND
rtc1:5V
rtc1:SDA
rtc1:SCL
rtc1:SQW
led1:A
led1:C
led2:A
led2:C
bz1:1
bz1:2