#include <LiquidCrystal.h>
//RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(A1, A0, 6, 7, 8, 9);
const byte backLightPin = 10;
boolean backLight = false;
unsigned long previousMillis;
#define interval 2000
int callswitch;
int call = 0;
char line [64];
void setup() {
// set up the number of columns and rows on the LCD
lcd.begin(16, 2);
Serial.println("start call simulator");
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(2000);
pinMode(backLightPin, OUTPUT);
analogWrite(backLightPin,255);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" ENTER CALL NR");
delay(1000);
analogWrite(backLightPin,0);
}
void loop() {
Serial.println("ENTER CALL NR:");
while (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;
}
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");
}else
if (call == 0) {
Serial.println("DISPLAY OFF");
previousMillis = millis();
if (millis()-previousMillis < interval) {
backLight = true;
}
else {
backLight = false;
}
digitalWrite(backLightPin, backLight);
}
}