#include <Wire.h>
#include "Keypad.h"
#include "RTClib.h"
#include "LiquidCrystal_I2C.h"
#include "Servo.h"
const byte ROWS = 4;
const byte COLS = 4;
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
Servo servojoel;
RTC_DS1307 RTC;
char daysOfTheWeek[7][12] = {"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"};
char keys [ROWS] [COLS] = {
{'1', '2', '3', 'E'},
{'4', '5', '6', 'F'},
{'7', '8', '9', 'J'},
{'D', '0', 'G', 'A'},
};
byte rowPins[ROWS] = {9, 8 ,7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
char i[4] = {0, 0, 0, 0};
char key=0;
int j=0;
int cont = 0;
int AZUL = 13;
int AMARILLO = 12;
int BLANCO = 11;
int buzzer = A0;
int pos = 0;
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup () {
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("INTRODUEIX LA");
lcd.setCursor(0,1);
lcd.print("CONTRASENYA:");
Serial.begin(9600);
Wire.begin();
RTC.begin();
RTC.adjust(DateTime(__DATE__, __TIME__));
servojoel.attach(10);
servojoel.write(pos);
}
void loop () {
lcd.setCursor(0,0);
lcd.print("INTRODUEIX LA");
lcd.setCursor(0,1);
lcd.print("CONTRASENYA:");
DateTime now = RTC.now();
while (cont < 4) { //
key = keypad.getKey();
i[j]= key;
if (key){
lcd.print("&");
j=j+1;
cont = cont+1;
}
}
if (i[0] == '1' && i[1] == '4' && i[2] == '7' && i[3] == '0')
{
digitalWrite (AZUL, HIGH);
delay(2000);
digitalWrite (AZUL, LOW);
lcd.clear();
}
if (i[0] == '4' && i[1] == '5' && i[2] == '7' && i[3] == '8')
{
digitalWrite (AMARILLO, HIGH);
delay(2000);
digitalWrite (AMARILLO, LOW);
lcd.clear();
}
if (i[0] == '3' && i[1] == '6' && i[2] == '9' && i[3] == '1')
{
digitalWrite (BLANCO, HIGH);
delay(2000);
digitalWrite (BLANCO, LOW);
lcd.clear();
}
if (i[0] == 'A' && i[1] == 'D' && i[2] == 'G' && i[3] == 'J')
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("DATE: ");
lcd.print(now.day(), DEC);
lcd.print("/");
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.print(now.year(), DEC);
lcd.print("/");
lcd.setCursor(0,1);
lcd.print(now.hour(), DEC);
lcd.print(":");
lcd.print(now.minute(), DEC);
lcd.print(":");
lcd.print(now.second(), DEC);
delay(3000);
lcd.clear();
}
if (i[0] == 'J' && i[1] == 'E' && i[2] == 'F' && i[3] == 'E')
{
lcd.clear();
servojoel.write(90);
delay(1000);
servojoel.write(0);
delay(1000);
servojoel.attach(10);
i[0]=0;
i[1]=0;
i[2]=0;
i[3]=0;
}
else{
lcd.clear();
}
cont =0;
j=0;
key=0;
}