#include <LiquidCrystal.h>
//RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(A1, A0, 6, 7, 8, 9);
const unsigned long Interval = 15000; //time set to switch off the display backligth
unsigned long previousTime = 0;
const int backLightPin = 10;
int call = 0;
void setup(){
pinMode(backLightPin, OUTPUT);
lcd.begin(16, 2);
Serial.begin(9600);
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" B747 by RF R&D");
lcd.setCursor(0,1);
lcd.print(" START CALL SIM");
delay(1000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print(" ENTER CALL NR");
}
void loop() {
Calling();
//timing loop
unsigned long currentTime = millis();
unsigned long currentTime2 = millis();
if (call == 0) {
if (currentTime - previousTime >= Interval) {
digitalWrite(backLightPin, LOW);
previousTime = currentTime;
Callmenu();
}
else {
}
}
if (currentTime2 - previousTime <= Interval) {
Callmenu();
}
}
void Callmenu() {
Serial.println("ENTER CALL NR:");
if (Serial.available() == 0) {
}
int menuChoice = Serial.parseInt();
switch (menuChoice) {
case 1:
// directory selection
Serial.println("01 DIRECTORY ");
call = 1;
break;
case 2:
//video in use
Serial.println("02 VIDEO IN USE");
call = 2;
break;
case 3:
//PA in use
Serial.println("03 PA IN USE");
call = 3;
break;
case 4:
//Cabin Ready
Serial.println("04 CABIN READY");
call = 4;
break;
case 5:
//pilot alert
Serial.println("PILOT ALERT");
call = 5;
break;
case 6:
//priority
Serial.println("PRIORITY");
call = 6;
break;
case 7:
//party line
Serial.println("PARTY LINE");
call = 7;
break;
case 11:
//Door 1 left
Serial.println("DOOR 1 LEFT");
call = 11;
break;
case 12:
//Door 2 left
Serial.println("DOOR 2 LEFT");
call = 12;
break;
case 13:
//Door 3 left
Serial.println("DOOR 3 LEFT");
call = 13;
break;
case 14:
//Door 4 left
Serial.println("DOOR 4 LEFT");
call = 14;
break;
case 15:
//Door 5 left
Serial.println("DOOR 5 LEFT");
call = 15;
break;
case 16:
//Upper Deck Door left
Serial.println("U/D LEFT DOOR");
call = 16;
break;
case 21:
//Door 1 right
Serial.println("DOOR 1 RIGHT");
call = 21;
break;
case 22:
//Door 2 right
Serial.println("DOOR 2 RIGHT");
call = 22;
break;
case 23:
//Door 3 right
Serial.println("DOOR 3 RIGHT");
call = 23;
break;
case 24:
//Door 4 right
Serial.println("DOOR 4 RIGHT");
call = 24;
break;
case 25:
//Door 5 right
Serial.println("DOOR 5 RIGHT");
call = 25;
break;
case 26:
//Upper Deck Door right
Serial.println("U/D RIGHT DOOR");
call = 26;
break;
case 31:
//Pilot
Serial.println("PILOT");
call = 31;
break;
case 32:
//Priority STA
Serial.println("PRIORITY STA");
call = 32;
break;
case 33:
//Priority Pilot
Serial.println("PRIORITY PILOT");
call = 33;
break;
case 34:
//Purser
Serial.println("PURSER");
call = 34;
break;
case 36:
//upper Deck Stairs
Serial.println("U/D STAIRS");
call = 36;
break;
case 41:
//PA first class
Serial.println("PA FIRST CL");
call = 41;
break;
case 42:
//PA business class
Serial.println("PA BUSINESS");
call = 42;
break;
case 43:
//PA Economy class
Serial.println("PA ECONOMY CL");
call = 43;
break;
case 44:
//PA crew rest
Serial.println("PA CREW REST");
call = 44;
break;
case 46:
//PA all areas
Serial.println("PA ALL AREAS");
call = 46;
break;
case 47:
//PA priority
Serial.println("PA PRIORITY");
call = 47;
break;
case 51:
//Door 2 galley
Serial.println("DOOR 2 GALLEY");
call = 51;
break;
case 52:
//main deck galley
Serial.println("M/D GALLEY");
call = 52;
break;
case 53:
//Door 4 galley
Serial.println("DOOR 4 GALLEY");
call = 53;
break;
case 55:
//All call
Serial.println("ALL CALL");
call = 55;
break;
case 56:
//Upper deck galley
Serial.println("U/D GALLEY");
call = 56;
break;
case 61:
//Door 5 crew rest (pax only);
Serial.println("DR5 CREW REST");
call = 61;
break;
case 66:
//Crew rest pilots
Serial.println("CR REST PILOT");
call = 66;
break;
case 67:
//cabin ready (inhibits call light)
Serial.println("CABIN READY");
call = 67;
break;
case 71:
//ground crew call
Serial.println("GND CREW CALL");
call = 71;
break;
case 72:
//cargo call (combi only)
Serial.println("CARGO CALL");
call = 72;
break;
case 73:
//Upper deck crew rest
Serial.println("U/D CREW REST");
call = 73;
break;
case 74:
//Main deck crew rest
Serial.println("M/D CREW REST");
call = 74;
break;
case 77:
//pilot alert
Serial.println("PILOT ALERT");
call = 77;
break;
case 0:
Serial.println("DSPY OFF");
call = 0;
break;
default:
break;
}
}
void Calling() {
unsigned long currentTime = millis();
Serial.print("call:");Serial.println(call);
if(call == 1)
{
Serial.println("DIRECTORY");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DIRECTORY 01");
previousTime = currentTime;
}else
if(call == 2)
{
Serial.println("VIDEO IN USE"); //melding
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("VIDEO IN USE 02");
}else
if (call == 3)
{
Serial.println("PA IN USE"); //melding
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PA IN USE 03");
}else
if (call == 4)
{
Serial.println("CABIN READY"); //melding
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("CABIN READY 04");
previousTime = currentTime;
}else
if (call == 5)
{
Serial.println("PILOT ALERT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PILOT ALERT 05");
previousTime = currentTime;
}else
if (call == 7)
{
Serial.println("PARTY LINE");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PARTY LINE 07");
previousTime = currentTime;
}else
if (call == 11)
{
Serial.println("DOOR 1 LEFT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DOOR 1 LEFT 11");
previousTime = currentTime;
}
if (call == 12)
{
Serial.println("DOOR 2 LEFT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DOOR 2 LEFT 12");
previousTime = currentTime;
}else
if (call == 13)
{
Serial.println("DOOR 3 LEFT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DOOR 3 LEFT 13");
previousTime = currentTime;
}else
if (call == 14)
{
Serial.println("DOOR 4 LEFT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor (0, 1);
lcd.println("DOOR 4 LEFT 14");
previousTime = currentTime;
}else
if (call == 15)
{
Serial.println("DOOR 5 LEFT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DOOR 5 LEFT 15");
previousTime = currentTime;
}else
if (call == 16)
{
Serial.println("U/D LEFT DOOR");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("U/D LEFT DOOR 16");
previousTime = currentTime;
}else
if (call == 21)
{
Serial.println("DOOR 1 RIGHT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DOOR 1 RIGHT 21");
previousTime = currentTime;
}else
if (call == 22)
{
Serial.println("DOOR 2 RIGHT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DOOR 2 RIGHT 22");
previousTime = currentTime;
}else
if (call == 23)
{
Serial.println("DOOR 3 RIGHT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DOOR 3 RIGHT 23");
previousTime = currentTime;
}else
if (call == 24)
{
Serial.println("DOOR 4 RIGHT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DOOR 4 RIGHT 24");
previousTime = currentTime;
}else
if (call == 25)
{
Serial.println("DOOR 5 RIGHT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DOOR 5 RIGHT 25");
previousTime = currentTime;
}else
if (call == 26)
{
Serial.println("U/D RIGHT DOOR");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("U/D RGHT DOOR 26");
previousTime = currentTime;
}else
if (call == 31)
{
Serial.println("PILOT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PILOT 31");
previousTime = currentTime;
}else
if (call == 32)
{
Serial.println("PRIORITY STA");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PRIORITY STA 32");
previousTime = currentTime;
}else
if (call == 33)
{
Serial.println("PRIORTY PILOT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PRIORTY PILOT 33");
previousTime = currentTime;
}else
if (call == 34)
{
Serial.println("PURSER");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PURSER 34");
previousTime = currentTime;
}else
if (call == 36)
{
Serial.println("U/D STAIRS");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("U/D STAIRS 36");
previousTime = currentTime;
}else
if (call == 41)
{
Serial.println("PA FIRST CL");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PA FIRST CL 41");
previousTime = currentTime;
}else
if (call == 42)
{
Serial.println("PA BUSINESS");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PA BUSINESS 42");
previousTime = currentTime;
}else
if (call == 43)
{
Serial.println("PA CREW REST");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PA CREW REST 43");
previousTime = currentTime;
}else
if (call == 44)
{
Serial.println("PA ALL AREAS");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PA ALL AREAS 44");
previousTime = currentTime;
}else
if (call == 47)
{
Serial.println("PA PRIORITY");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PA PRIORITY 47");
previousTime = currentTime;
}else
if (call == 51)
{
Serial.println("DOOR 2 GALLEY");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DOOR 2 GALLEY 51");
previousTime = currentTime;
}else
if (call == 52)
{
Serial.println("M/D GALLEY");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("M/D GALLEY 52");
previousTime = currentTime;
}else
if (call == 53)
{
Serial.println("DOOR 4 GALLEY");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DOOR 4 GALLEY 53");
previousTime = currentTime;
}else
if (call == 55)
{
Serial.println("ALL CALL");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("ALL CALL 55");
previousTime = currentTime;
}else
if (call == 56)
{
Serial.println("U/D GALLEY");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("U/D GALLEY 56");
previousTime = currentTime;
}else
if (call == 61)
{
Serial.println("DR 5 CREW REST");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("DR5 CREW REST 61");
previousTime = currentTime;
}else
if (call == 66)
{
Serial.println("CR REST PILOT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("CR REST PILOT 66");
previousTime = currentTime;
}else
if (call == 67)
{
Serial.println("CABIN READY");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("CABIN READY 67");
previousTime = currentTime;
}else
if (call == 71)
{
Serial.println("GND CREW CALL");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("GND CREW CALL 71");
previousTime = currentTime;
}else
if (call == 72)
{
Serial.println("CARGO CALL");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("CARGO CALL 72");
previousTime = currentTime;
}else
if (call == 73)
{
Serial.println("U/D CREW REST");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("U/D CREW REST 73");
previousTime = currentTime;
}else
if (call == 74)
{
Serial.println("M/D CREW REST");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("M/D CREW REST 74");
previousTime = currentTime;
}else
if (call == 77)
{
Serial.println("PILOT ALERT");
digitalWrite(backLightPin, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.println("PILOT ALERT 77");
previousTime = currentTime;
}else
if (call == 0) {
Serial.println("DISPLAY OFF");
}
else{}
}