hier der code ich habe gestern abend noch bischen geschrieben mit anderen worten bin selber auf die lösung gekommen bin trotzdem dankpar über tipps
DFRobotDFPlayerMini werde ich heute noch mit einarbeiten habe allerdings noch nicht alle sounddaten zusammen
PlayB2 /RightB2 und LeftB2 sind transistorsteuerungen um den Play/right und leftButton erst nutzen zu können wen sie auch gebraucht werden
#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
}
#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
}