#include <TimeLib.h>
#include <LiquidCrystal.h>
int h;
int m;
int s;
int hours;
int minutes;
int seconds;
LiquidCrystal lcd(22, 23, 13, 12, 11, 10);
void PrintLCD(){
lcd.setCursor(4, 0);
if (h < 10){
lcd.print("0");
}
lcd.print(h);
lcd.print(":");
if (m < 10){
lcd.print("0");
}
lcd.print(m);
lcd.print(":");
if (s < 10){
lcd.print("0");
}
lcd.print(s);
lcd.setCursor(3, 1);
lcd.print("H:");
if (hours < 10){
lcd.print("0");
}
lcd.print(hours);
lcd.setCursor(9, 1);
lcd.print("M:");
if (minutes < 10){
lcd.print("0");
}
lcd.print(minutes);
}
void setup() {
/* Buttons */
pinMode(51, INPUT); /* SET CLOCK */
pinMode(43, INPUT); /* HOURS UP */
pinMode(45, INPUT); /* HOURS DOWN */
pinMode(36, INPUT); /* MINUTES UP */
pinMode(38, INPUT); /* MINUTES DOWN */
/* Liquid Crystal */
lcd.begin(16, 2);
/* ROW 01 */
pinMode(2, OUTPUT); /* E */
pinMode(3, OUTPUT); /* eS */
pinMode(4, OUTPUT); /* sON */
pinMode(5, OUTPUT); /* LA */
pinMode(6, OUTPUT); /* laS */
pinMode(7, OUTPUT); /* UNA */
/* ROW 02 */
pinMode(8, OUTPUT); /* DOS */
pinMode(9, OUTPUT); /* TRES */
/* ROW 03 */
pinMode(27, OUTPUT); /* CUATRO */
pinMode(29, OUTPUT); /* CINCO */
/* ROW 04 */
pinMode(31, OUTPUT); /* SEIS */
pinMode(33, OUTPUT); /* SIETE */
/* ROW 05 */
pinMode(35, OUTPUT); /* OCHO */
pinMode(37, OUTPUT); /* NUEVE */
/* ROW 06 */
pinMode(39, OUTPUT); /* DIEZ */
pinMode(41, OUTPUT); /* ONCE */
/* ROW 07 */
pinMode(30, OUTPUT); /* DOCE */
pinMode(32, OUTPUT); /* Y */
pinMode(34, OUTPUT); /* MENOS */
/* ROW 08 */
pinMode(42, OUTPUT); /* VEINTE */
pinMode(44, OUTPUT); /* DIEZ */
/* ROW 09 */
pinMode(46, OUTPUT); /* VEINTIC */
pinMode(48, OUTPUT); /* CINCO */
/* ROW 10 */
pinMode(50, OUTPUT); /* MEDIA */
pinMode(52, OUTPUT); /* CUARTO */
setTime(0,0,0, 1,1,1970);
}
void loop() {
/* Buttons */
if (digitalRead(43) == HIGH){
if (hours < 12){
hours++;
}
}
if (digitalRead(45) == HIGH){
if (hours > 0){
hours--;
}
}
if (digitalRead(36) == HIGH){
if (minutes < 60){
minutes++;
}
}
if (digitalRead(38) == HIGH){
if (minutes > 0){
minutes--;
}
}
if (digitalRead(51) == HIGH){
setTime(hours,minutes,0, 1,1,1970);
}
/* Cleaning ... */
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(27, LOW);
digitalWrite(29, LOW);
digitalWrite(31, LOW);
digitalWrite(33, LOW);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(30, LOW);
digitalWrite(32, LOW);
digitalWrite(34, LOW);
digitalWrite(42, LOW);
digitalWrite(44, LOW);
digitalWrite(46, LOW);
digitalWrite(48, LOW);
digitalWrite(50, LOW);
digitalWrite(52, LOW);
/* Time */
h = hour();
m = minute();
s = second();
PrintLCD();
/* Hours */
if (h == 0 || h == 12){
digitalWrite(5, HIGH); /* LA */
digitalWrite(6, HIGH); /* laS */
digitalWrite(30, HIGH); /* DOCE */
}
else if (h == 1 || h == 13){
digitalWrite(5, HIGH); /* LA */
digitalWrite(7, HIGH); /* UNA */
}
else if (h == 2 || h == 14){
digitalWrite(5, HIGH); /* LA */
digitalWrite(6, HIGH); /* laS */
digitalWrite(8, HIGH); /* DOS */
}
else if (h == 3 || h == 15){
digitalWrite(5, HIGH); /* LA */
digitalWrite(6, HIGH); /* laS */
digitalWrite(9, HIGH); /* TRES */
}
else if (h == 4 || h == 16){
digitalWrite(5, HIGH); /* LA */
digitalWrite(6, HIGH); /* laS */
digitalWrite(27, HIGH); /* CUATRO */
}
else if (h == 5 || h == 17){
digitalWrite(5, HIGH); /* LA */
digitalWrite(6, HIGH); /* laS */
digitalWrite(29, HIGH); /* CINCO */
}
else if (h == 6 || h == 18){
digitalWrite(5, HIGH); /* LA */
digitalWrite(6, HIGH); /* laS */
digitalWrite(31, HIGH); /* SEIS */
}
else if (h == 7 || h == 19){
digitalWrite(5, HIGH); /* LA */
digitalWrite(6, HIGH); /* laS */
digitalWrite(33, HIGH); /* SIETE */
}
else if (h == 8 || h == 20){
digitalWrite(5, HIGH); /* LA */
digitalWrite(6, HIGH); /* laS */
digitalWrite(35, HIGH); /* OCHO */
}
else if (h == 9 || h == 21){
digitalWrite(5, HIGH); /* LA */
digitalWrite(6, HIGH); /* laS */
digitalWrite(35, HIGH); /* OCHO */
}
else if (h == 10 || h == 22){
digitalWrite(5, HIGH); /* LA */
digitalWrite(6, HIGH); /* laS */
digitalWrite(37, HIGH); /* OCHO */
}
else if (h == 11 || h == 23){
digitalWrite(5, HIGH); /* LA */
digitalWrite(6, HIGH); /* laS */
digitalWrite(39, HIGH); /* OCHO */
}
/* Minutes */
if (m >= 5 && m < 10){
digitalWrite(32, HIGH); /* Y */
digitalWrite(48, HIGH); /* CINCO */
}
else if (m >= 10 && m < 15){
digitalWrite(32, HIGH); /* Y */
digitalWrite(44, HIGH); /* DIEZ */
}
else if (m >= 15 && m < 20){
digitalWrite(32, HIGH); /* Y */
digitalWrite(52, HIGH); /* CUARTO */
}
else if (m >= 20 && m < 25){
digitalWrite(32, HIGH); /* Y */
digitalWrite(42, HIGH); /* VEINTE */
}
else if (m >= 25 && m < 30){
digitalWrite(32, HIGH); /* Y */
digitalWrite(46, HIGH); /* VEINTI */
digitalWrite(48, HIGH); /* CINCO */
}
else if (m >= 30 && m < 35){
digitalWrite(32, HIGH); /* Y */
digitalWrite(50, HIGH); /* MEDIA */
}
else if (m >= 35 && m < 40){
digitalWrite(34, HIGH); /* MENOS */
digitalWrite(46, HIGH); /* VEINTI */
digitalWrite(48, HIGH); /* CINCO */
}
else if (m >= 40 && m < 45){
digitalWrite(34, HIGH); /* MENOS */
digitalWrite(42, HIGH); /* VEINTE */
}
else if (m >= 45 && m < 50){
digitalWrite(34, HIGH); /* MENOS */
digitalWrite(52, HIGH); /* CUARTO */
}
else if (m >= 50 && m < 55){
digitalWrite(34, HIGH); /* MENOS */
digitalWrite(44, HIGH); /* DIEZ */
}
else if (m >= 55 && m < 60){
digitalWrite(34, HIGH); /* MENOS */
digitalWrite(48, HIGH); /* CINCO */
}
delay(40);
}