#include <LiquidCrystal.h>
#include <RTClib.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
RTC_DS1307 rtc;
String from;
String to;
int keep = 250;
void arrow_transition(){
lcd.setCursor(7,0);
lcd.print("-");
lcd.setCursor(7,1);
lcd.print("-");
delay(keep);
for(int i=1;i<8;i++){
lcd.setCursor(7-i,0);
lcd.print("<");
lcd.setCursor(7-i+1,0);
lcd.print("-");
lcd.setCursor(7+i,0);
lcd.print(">");
lcd.setCursor(7+i-1,0);
lcd.print("-");
lcd.setCursor(7-i,1);
lcd.print("<");
lcd.setCursor(7-i+1,1);
lcd.print("-");
lcd.setCursor(7+i,1);
lcd.print(">");
lcd.setCursor(7+i-1,1);
lcd.print("-");
delay(keep);
}
lcd.clear();
}
void selection_from(int num){
switch (num){
case 0:
from = "EL AFROUN";
lcd.print("EL AFROUN");
break;
case 1:
from = "MOUZAIA";
lcd.print("MOUZAIA");
break;
case 2:
from = "CHIFFA";
lcd.print("CHIFFA");
break;
case 3:
from = "BLIDA";
lcd.print("BLIDA");
break;
case 4:
from = "BENI MERED";
lcd.print("BENI MERED");
break;
case 5:
from = "BOUFARIK";
lcd.print("BOUFARIK");
break;
case 6:
from = "BIRTOUTA";
lcd.print("BIRTOUTA");
break;
case 7:
from = "BABA ALI";
lcd.print("BABA ALI");
break;
case 8:
from = "AIN NAADJA";
lcd.print("AIN NAADJA");
break;
case 9:
from = "GUE DE CONSTANTINE";
lcd.print("GUE DE CONSTANTINE");
break;
case 10:
from = "EL HARRACH";
lcd.print("EL HARRACH");
break;
case 11:
from = "CAROUBIER";
lcd.print("CAROUBIER");
break;
case 12:
from = "HUSSEIN DEY";
lcd.print("HUSSEIN DEY");
break;
case 13:
from = "ATELIERS";
lcd.print("ATELIERS");
break;
case 14:
from = "ALGER";
lcd.print("ALGER");
break;
case 15:
from = "OUED SMAR";
lcd.print("OUED SMAR");
break;
case 16:
from = "BAB EZZOUAR";
lcd.print("BAB EZZOUAR");
break;
case 17:
from = "DAR EL BEIDA";
lcd.print("DAR EL BEIDA");
break;
case 18:
from = "ROUIBA";
lcd.print("ROUIBA");
break;
case 19:
from = "REGHAIA";
lcd.print("REGHAIA");
break;
case 20:
from = "CORSO";
lcd.print("CORSO");
break;
case 21:
from = "BOUMERDAS";
lcd.print("BOUMERDAS");
break;
case 22:
from = "THENIA";
lcd.print("THENIA");
break;
}
}
void selection_to(int num){
switch (num){
case 0:
to = "EL AFROUN";
lcd.print("EL AFROUN");
break;
case 1:
to = "MOUZAIA";
lcd.print("MOUZAIA");
break;
case 2:
to = "CHIFFA";
lcd.print("CHIFFA");
break;
case 3:
to = "BLIDA";
lcd.print("BLIDA");
break;
case 4:
to = "BENI MERED";
lcd.print("BENI MERED");
break;
case 5:
to = "BOUFARIK";
lcd.print("BOUFARIK");
break;
case 6:
to = "BIRTOUTA";
lcd.print("BIRTOUTA");
break;
case 7:
to = "BABA ALI";
lcd.print("BABA ALI");
break;
case 8:
to = "AIN NAADJA";
lcd.print("AIN NAADJA");
break;
case 9:
to = "GUE DE CONSTANTINE";
lcd.print("GUE DE CONSTANTINE");
break;
case 10:
to = "EL HARRACH";
lcd.print("EL HARRACH");
break;
case 11:
to = "CAROUBIER";
lcd.print("CAROUBIER");
break;
case 12:
to = "HUSSEIN DEY";
lcd.print("HUSSEIN DEY");
break;
case 13:
to = "ATELIERS";
lcd.print("ATELIERS");
break;
case 14:
to = "ALGER";
lcd.print("ALGER");
break;
case 15:
to = "OUED SMAR";
lcd.print("OUED SMAR");
break;
case 16:
to = "BAB EZZOUAR";
lcd.print("BAB EZZOUAR");
break;
case 17:
to = "DAR EL BEIDA";
lcd.print("DAR EL BEIDA");
break;
case 18:
to = "ROUIBA";
lcd.print("ROUIBA");
break;
case 19:
to = "REGHAIA";
lcd.print("REGHAIA");
break;
case 20:
to = "CORSO";
lcd.print("CORSO");
break;
case 21:
to = "BOUMERDAS";
lcd.print("BOUMERDAS");
break;
case 22:
to = "THENIA";
lcd.print("THENIA");
break;
}
}
void setup() {
lcd.begin(16, 2);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
pinMode(A1, INPUT);
pinMode(5, INPUT_PULLUP);
}
void loop() {
lcd.setCursor(5,0);
lcd.print("FROM :");
delay(1000);
arrow_transition();
while(digitalRead(5) == HIGH){
selection_from(analogRead(A1) / 45);
delay(200);
lcd.clear();
}
lcd.clear();
lcd.setCursor(5,0);
lcd.print("TO :");
delay(1000);
arrow_transition();
while(digitalRead(5) == HIGH){
selection_to(analogRead(A1) / 45);
delay(200);
lcd.clear();
}
arrow_transition();
DateTime now = rtc.now();
int time = now.hour()*60 + now.minute() - 120;
lcd.print(from);
lcd.print("-");
lcd.print(to);
lcd.setCursor(0,1);
lcd.print("Time :");
lcd.print(time / 60);
lcd.print(":");
lcd.print(time - ((time / 60) * 60));
delay(80000);
}