#include <Wire.h>
#include "Keypad.h"
#include "RTClib.h"
#include "Adafruit_I2CDevice.h"
#include "Servo.h"
const byte ROWS = 4;
const byte COLS = 3;
Servo servojoel;
RTC_DS1307 RTC;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
char keys [ROWS] [COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[ROWS] = {9, 8 ,7, 6};
byte colPins[COLS] = {5, 4, 3};
char i[4] = {0, 0, 0, 0}; // El código solo será de 4 digitos
char key=0; // Variable de cada uno de los digitos
int j=0; // Variable que identifica la posición del dígito
int cont = 0; // Una vez introduzcamos los 4 dígitos no nos dejará añadir más
int green = 13; // Pin LED
int red = 12; // Pin LED
int buzzer = A0; // Pin buzzer
int pos = 0; // Posición del servomotor
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup () {
Serial.begin(9600); // El circuito arranca
Wire.begin();
RTC.begin(); // Se inicia el rtc
RTC.adjust(DateTime(__DATE__, __TIME__)); // Se sincroniza la fecha y la hora
servojoel.attach(10); // Se inicia el servomotor
servojoel.write(pos); // Se inicia el servomotor en la posición izquierda
}
void loop () {
DateTime now = RTC.now();
while (cont < 4) { //
key = keypad.getKey(); // Almacena las variables de las teclas
i[j]= key; // Almacena la posición de cada tecla pulsada
if (key){
Serial.print(key);
j=j+1;
cont = cont+1;
}
}
if (i[0] == '1' && i[1] == '2' && i[2] == '3' && i[3] == '4') // Clave
{
servojoel.write(90); // El servomotor se activa cuando la clave es correcta
delay(5000);
servojoel.write(pos); // Al pasar 5 segundos vuelve a su posición original
Serial.println(" ");
Serial.println("Clave correcta");
Serial.println("Joel Ascolies");
Serial.println("ID01"); // Imprime este mensaje y los dos anteriores por el serial monitor
digitalWrite(green, HIGH); // El LED verde se activa
delay(5000);
digitalWrite(green, LOW); // Se vuelve a apagar despues de 5 segundos
delay(5000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '0' && i[3] == '2') // CLAVE CORRECTA
{
Serial.println(" ");
Serial.println("SISTEMA ACTIVADO");
Serial.println("Kim Minji");
Serial.println("ID02");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '0' && i[3] == '3') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Hanni Pham");
Serial.println("ID03");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '0' && i[3] == '4') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Danielle Marsh");
Serial.println("ID04");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '0' && i[3] == '5') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Kang Haerin");
Serial.println("ID05");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '0' && i[3] == '6') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Lee Hyein");
Serial.println("ID05");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '0' && i[3] == '7') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Miyawaki Sakura");
Serial.println("ID07");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '0' && i[3] == '8') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Kim Chaewon");
Serial.println("ID08");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '0' && i[3] == '9') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Huh Yunjin");
Serial.println("ID09");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '1' && i[3] == '0') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Nakamura Kazuha");
Serial.println("ID10");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '1' && i[3] == '1') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Hong Eunchae");
Serial.println("ID11");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW);
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '1' && i[3] == '2') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Kim Jisoo");
Serial.println("ID12");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '1' && i[3] == '3') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Kim Jennie");
Serial.println("ID13");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '1' && i[3] == '4') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Park Chaeyoung");
Serial.println("ID14");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else if (i[0] == '2' && i[1] == '0' && i[2] == '1' && i[3] == '5') // CLAVE CORRECTO
{
Serial.println(" ");
Serial.println("LOCK OPENED");
Serial.println("Lalisa Manobal");
Serial.println("ID15");
digitalWrite(green, HIGH);
delay(10000);
digitalWrite(green, LOW); // EL LED SE APAGA DESOUES DE 10 SEGUNDOS
delay(10000);
}
else{ // En caso de que la clave no sea correcta
Serial.println();
Serial.println("ACCESS DENIED"); // Imprime este mensaje por pantalla
digitalWrite (red, HIGH); // El led rojo se activa
Serial.print("DATE: ");
Serial.print(now.day(), DEC); // SE IMPRIME EL DIA
Serial.print('/');
Serial.print(now.month(), DEC); // SE IMPRIME EL MES
Serial.print('/');
Serial.print(now.year(), DEC); // SE IMPRIME EL AÑO
Serial.print(' ');
Serial.println();
Serial.print("TIME: ");
Serial.print(now.hour(), DEC); // SE IMPRIME LA HORA
Serial.print(':');
Serial.print(now.minute(), DEC); // SE IMPRIME EL MINUTO
Serial.print(':');
Serial.print(now.second(), DEC); // SE IMPRIME EL SEGUNDO
Serial.println();
for (int i=950; i<=950; i=i+300){ // Buzzer
tone (buzzer, i, 3000); // EL buzzer se activa durante 3 segundos
delay (3000);
noTone(buzzer);
}
}
cont =0;
j=0;
key=0;
}