#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int upButton = 12;
int downButton = 10;
int selectButton = 11;
int leftB = 13;
int rightB = 9;
int menu = 1;
int menu1 = 1;
int PlayB = 7;
int PlayB2 = 8;
int RightB2 = 6;
int LeftB2 =5;
int menu2 = 1;
int countUp =1;
int menu3 =1;
int menu4 =1;
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(9600); // Verwende die serielle Schnittstelle, um die Nummer auszugeben
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
pinMode(selectButton, INPUT_PULLUP);
pinMode(rightB, INPUT_PULLUP);
pinMode(leftB,INPUT_PULLUP);
pinMode(PlayB, INPUT_PULLUP);
pinMode(PlayB2, OUTPUT);
pinMode(RightB2, OUTPUT);
pinMode(LeftB2, OUTPUT);
updatemenu4();
updatemenu3();
updatemenu2();
updatemenu1();
updatemenu();
int countUp();
}
void updatemenu() {
switch (menu) {
case 0:
menu = 1;
break;
case 1:
lcd.clear();
lcd.print(" MODELBORD");
lcd.setCursor(0, 1);
lcd.print(" ->Tiger1<-");
lcd.setCursor(0,2);
lcd.print("Sounds durch drucken ");
lcd.setCursor(0,3);
lcd.print(" von Enter anzeigen");
break;
case 2:
lcd.clear();
lcd.print(" MODELBORD");
lcd.setCursor(0, 1);
lcd.print("->Stuka/Junkers87<-");
lcd.setCursor(0,2);
lcd.print("Sounds durch drucken ");
lcd.setCursor(0,3);
lcd.print(" von Enter anzeigen");
break;
case 3:
lcd.clear();
lcd.print(" MODELBORD");
lcd.setCursor(0, 1);
lcd.print(" ->SDKFZ/251<-");
lcd.setCursor(0,2);
lcd.print("Sounds durch drucken ");
lcd.setCursor(0,3);
lcd.print(" von Enter anzeigen");
break;
case 4:
lcd.clear();
lcd.print(" MODELBORD");
lcd.setCursor(0, 1);
lcd.print(" ->FLAK36/PaK<-");
lcd.setCursor(0,2);
lcd.print("Sounds durch drucken ");
lcd.setCursor(0,3);
lcd.print(" von Enter anzeigen");
break;
case 5:
menu = 4;
break;
}
}
void updatemenu1(){
switch (menu1) {
case 0:
menu1 = 1;
break;
case 1:
lcd.clear();
lcd.print(" ->Motor" );
lcd.setCursor(0, 1);
lcd.print(" Geschuetz");
lcd.setCursor(0,2);
lcd.print(" Turm");
lcd.setCursor(0,3);
lcd.print(" MG");
break;
case 2:
lcd.clear();
lcd.print(" Motor" );
lcd.setCursor(0, 1);
lcd.print(" ->Geschuetz");
lcd.setCursor(0,2);
lcd.print(" Turm");
lcd.setCursor(0,3);
lcd.print(" MG");;
break;
case 3:
lcd.clear();
lcd.print(" Motor" );
lcd.setCursor(0, 1);
lcd.print(" Geschuetz");
lcd.setCursor(0,2);
lcd.print(" ->Turm");
lcd.setCursor(0,3);
lcd.print(" MG");
break;
case 4:
lcd.clear();
lcd.print(" Motor" );
lcd.setCursor(0, 1);
lcd.print(" Geschuetz");
lcd.setCursor(0,2);
lcd.print(" Turm");
lcd.setCursor(0,3);
lcd.print(" ->MG");
break;
case 5:
menu1 = 4;
break;
}
}
void updatemenu2(){
switch (menu2) {
case 0:
menu2 = 1;
break;
case 1:
lcd.clear();
lcd.print(" ->Motor" );
lcd.setCursor(0, 1);
lcd.print(" Flug");
lcd.setCursor(0,2);
lcd.print(" Bomben");
lcd.setCursor(0,3);
lcd.print(" MG");
break;
case 2:
lcd.clear();
lcd.print(" Motor" );
lcd.setCursor(0, 1);
lcd.print(" ->Flug");
lcd.setCursor(0,2);
lcd.print(" Bomben");
lcd.setCursor(0,3);
lcd.print(" MG");;
break;
case 3:
lcd.clear();
lcd.print(" Motor" );
lcd.setCursor(0, 1);
lcd.print(" Flug");
lcd.setCursor(0,2);
lcd.print(" ->Bomben");
lcd.setCursor(0,3);
lcd.print(" MG");
break;
case 4:
lcd.clear();
lcd.print(" Motor" );
lcd.setCursor(0, 1);
lcd.print(" Flug");
lcd.setCursor(0,2);
lcd.print(" Bomben");
lcd.setCursor(0,3);
lcd.print(" ->MG");
break;
case 5:
menu2 = 4;
break;
}
}
void updatemenu3(){
switch (menu3) {
case 0:
menu3 = 1;
break;
case 1:
lcd.clear();
lcd.print(" ->Anlassen" );
lcd.setCursor(0, 1);
lcd.print(" Motor");
lcd.setCursor(0,2);
lcd.print(" Fahrt");
lcd.setCursor(0,3);
lcd.print(" MG");
break;
case 2:
lcd.clear();
lcd.print(" Anlassen" );
lcd.setCursor(0, 1);
lcd.print(" ->Motor");
lcd.setCursor(0,2);
lcd.print(" Fahrt");
lcd.setCursor(0,3);
lcd.print(" MG");;
break;
case 3:
lcd.clear();
lcd.print(" Anlassen" );
lcd.setCursor(0, 1);
lcd.print(" Motor");
lcd.setCursor(0,2);
lcd.print(" ->Fahrt");
lcd.setCursor(0,3);
lcd.print(" MG");
break;
case 4:
lcd.clear();
lcd.print(" Anlassen" );
lcd.setCursor(0, 1);
lcd.print(" Motor");
lcd.setCursor(0,2);
lcd.print(" Fahrt");
lcd.setCursor(0,3);
lcd.print(" ->MG");
break;
case 5:
menu3 = 4;
break;
}
}
void updatemenu4(){
switch (menu4) {
case 0:
menu4 = 1;
break;
case 1:
lcd.clear();
lcd.print(" ->Drehen" );
lcd.setCursor(0, 1);
lcd.print(" Feuerbefehl");
lcd.setCursor(0,2);
lcd.print(" Geschuetz");
lcd.setCursor(0,3);
lcd.print(" Explosion");
break;
case 2:
lcd.clear();
lcd.print(" Drehen" );
lcd.setCursor(0, 1);
lcd.print(" ->Feuerbefehl");
lcd.setCursor(0,2);
lcd.print(" Geschuetz");
lcd.setCursor(0,3);
lcd.print(" Explosion");;
break;
case 3:
lcd.clear();
lcd.print(" Drehen" );
lcd.setCursor(0, 1);
lcd.print(" Feuerbefehl");
lcd.setCursor(0,2);
lcd.print(" ->Geschuetz");
lcd.setCursor(0,3);
lcd.print(" Explosion");
break;
case 4:
lcd.clear();
lcd.print(" Drehen" );
lcd.setCursor(0, 1);
lcd.print(" Feuerbefehl");
lcd.setCursor(0,2);
lcd.print(" Geschuetz");
lcd.setCursor(0,3);
lcd.print(" ->Explosion");
break;
case 5:
menu2 = 4;
break;
}
}
void executeAction() {
switch (menu1) {
case 1:
action1();
break;
case 2:
action2();
break;
case 3:
action3();
break;
case 4:
action4();
break;
}
}
void action1() {
lcd.clear();
lcd.print("Play Motor Sound");
delay(6000);
digitalWrite(PlayB2, LOW);
digitalWrite(LeftB2, LOW);
digitalWrite(RightB2, LOW);
}
void action2() {
lcd.clear();
lcd.print("Play Geschuetz Sound");
delay(6000);
digitalWrite(PlayB2, LOW);
digitalWrite(LeftB2, LOW);
digitalWrite(RightB2, LOW);
}
void action3() {
lcd.clear();
lcd.print("Play Turm Sound");
delay(6000);
digitalWrite(PlayB2, LOW);
digitalWrite(LeftB2, LOW);
digitalWrite(RightB2, LOW);
}
void action4() {
lcd.clear();
lcd.print("Play MG Sound");
delay(6000);
digitalWrite(PlayB2, LOW);
digitalWrite(LeftB2, LOW);
digitalWrite(RightB2, LOW);
}
void loop() {
if (!digitalRead(rightB)){
menu++;
updatemenu();
delay(100);
while (!digitalRead(rightB));
digitalWrite(LeftB2, LOW);
digitalWrite(RightB2, LOW);
digitalWrite(PlayB2, LOW);
countUp++;
}
if (!digitalRead(leftB)){
menu--;
updatemenu();
delay(200);
while(!digitalRead(leftB));
digitalWrite(LeftB2, LOW);
digitalWrite(RightB2, LOW);
digitalWrite(PlayB2, LOW);
countUp--;
}
if (!digitalRead(selectButton) && countUp ==1)
{
updatemenu1();
delay(200);
while (!digitalRead(selectButton));
digitalWrite(PlayB2, HIGH);
digitalWrite(LeftB2, HIGH);
digitalWrite(RightB2, HIGH);
}
else if(!digitalRead(selectButton) && countUp == 2) {
updatemenu2();
delay(200);
while(!digitalRead(selectButton));
digitalWrite(PlayB2, HIGH);
digitalWrite(LeftB2, HIGH);
digitalWrite(RightB2, HIGH);
}
else if(!digitalRead(selectButton) && countUp == 3) {
updatemenu3();
delay(200);
while(!digitalRead(selectButton));
digitalWrite(PlayB2, HIGH);
digitalWrite(LeftB2, HIGH);
digitalWrite(RightB2, HIGH);
}
else if(!digitalRead(selectButton) && countUp == 4) {
updatemenu4();
delay(200);
while(!digitalRead(selectButton));
digitalWrite(PlayB2, HIGH);
digitalWrite(LeftB2, HIGH);
digitalWrite(RightB2, HIGH);
}
if (!digitalRead(downButton)&& countUp == 1){
menu1++;
updatemenu1();
delay(200);
while(!digitalRead(downButton));
}
else if (!digitalRead(downButton)&& countUp == 2){
menu2++;
updatemenu2();
delay(200);
while(!digitalRead(downButton));
}
else if (!digitalRead(downButton)&& countUp == 3){
menu3++;
updatemenu3();
delay(200);
while(!digitalRead(downButton));
}
else if (!digitalRead(downButton)&& countUp == 4){
menu4++;
updatemenu4();
delay(200);
while(!digitalRead(downButton));
}
if (!digitalRead(upButton) && countUp == 1){
menu1--;
updatemenu1();
delay(200);
while(!digitalRead(upButton));
}
else if (!digitalRead(upButton)&& countUp == 2){
menu2--;
updatemenu2();
delay(200);
while(!digitalRead(upButton));
}
else if (!digitalRead(upButton)&& countUp == 3){
menu3--;
updatemenu3();
delay(200);
while(!digitalRead(upButton));
}
else if (!digitalRead(upButton)&& countUp == 4){
menu4--;
updatemenu4();
delay(200);
while(!digitalRead(upButton));
}
if (!digitalRead(PlayB)){
executeAction();
updatemenu();
delay(200);
while(!digitalRead(PlayB));
}
Serial.println(countUp); // Gibt den aktuellen Stand von countUp aus
}