# include <Wire.h>
////////////////// Display //////////////////////////
# include<LiquidCrystal_I2C.h> //LCD Modul aufrufen
LiquidCrystal_I2C lcd(0x27, 20, 4);
const byte upButtonPin = A2;
const byte downButtonPin = A3;
const byte rightButtonPin = A0;
const byte leftButtonPin = A1;
//const byte menuPin = 10;
const byte summerPin = 9;
const byte relayPin = 13;
int taster=10;
int tasterstatus=0; //Das Wort „tasterstatus“ steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob der Taster gedrückt ist oder nicht.
int fade = 0;
String MenuItems[] = { // Menüpunkte
"Termin Plan 1",
"Relay Licht 2",
"Servo Schliesser 3",
"Maschinen Wache 4",
"Mp3 PLayer 5",
"Alkomat 6"
// und so weiter… wenn ich noch mehr brauche
};
void menuFunctions(int menu, byte right, byte left) // Menüfunktionen
{
if(menu == 1) //Funktion für 1. Menüpunkt
{
// menu Terminplan
lcd.setCursor(0, 3);
lcd.print("Termin fuer 4 Tage"); // hier muss die anwendung laufen
lcd.setCursor(12, 3);
}
if(menu == 2) //Funktion für 2. Menüpunkt
{
// menu Licht Schalten
//lcd.clear();
if(right == 1)
{
lcd.setCursor(0, 3);
lcd.print("Off ");
lcd.setCursor(10, 3);
lcd.print("On <<");
digitalWrite(13, HIGH); // schaltet pin13 ein
}
if(left == 1)
{
lcd.setCursor(0, 3);
lcd.print("Off <<");
lcd.setCursor(10, 3);
lcd.print("On ");
digitalWrite(13, LOW); // schaltet pin13 aus
}
}
if(menu == 3) //Funktion für3. Menüpunkt
{
//Menu Servo Schliesser
/// hier kommt das servo menü hin
if(right == 1)
{
lcd.setCursor(0, 3);
lcd.print("Off ");
lcd.setCursor(10, 3);
lcd.print("On <<");
digitalWrite(13, HIGH); // schaltet pin13 ein
}
if(left == 1)
{
lcd.setCursor(0, 3);
lcd.print("Off <<");
lcd.setCursor(10, 3);
lcd.print("On ");
digitalWrite(13, LOW); // schaltet pin13 aus
}
if(menu == 4) //Funktion für 4. Menüpunkt
{
// Menu Maschinen wache
lcd.setCursor(0, 3);
lcd.print("Maschinen Wache "); // hier muss die anwendung laufen
lcd.setCursor(12, 3);
}
if(menu ==5) //Funktion für 5. Menüpunkt
{
// Menu Mp3 Player
lcd.setCursor(0, 3);
lcd.print("Maschinen Wache"); // hier muss die anwendung laufen
lcd.setCursor(12, 3);
}
if(menu == 6) //Funktion für 6. Menüpunkt
{
// Spass Alkomat
lcd.setCursor(0, 3);
lcd.print("Mp3 Player"); // hier muss die anwendung laufen
lcd.setCursor(12, 3);
}
}
}
/*** nichts mehr ändern ***********************************************/
template< typename T, size_t NumberOfSize >
size_t MenuItemsSize(T (&) [NumberOfSize]){ return NumberOfSize; }
int numberOfMenuItems = MenuItemsSize(MenuItems) - 1;
int currentMenuItem = 0;
int previousMenuItem = 1;
byte button_flag = 0;
unsigned long previousMillis = millis();
const int note = 4699;
void beepsOnce()
{
tone(9, note, 125);
delay(60);
noTone(9);
}
/*******************************************************************/
void setup()
{
pinMode(13, OUTPUT);
/************************************/
pinMode(A2, INPUT_PULLUP);
pinMode(A3, INPUT_PULLUP);
pinMode(A0, INPUT_PULLUP);
pinMode(A1, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
lcd.init();
lcd.noBacklight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("###################");
lcd.setCursor(0,1);
lcd.print("# Projekt X #");
lcd.setCursor(0,2);
lcd.print("# #");
lcd.setCursor(0,3);
lcd.print("###################");
delay(2000);
// break;
lcd.clear();
}
void loop()
{
/*tasterstatus=digitalRead(taster); //Hier wird der Pin10 ausgelesen
if (tasterstatus == LOW)//Wenn der Taster gedrückt
{
//lcd.clear();
//lcd.setCursor(0,0);
// lcd.print("#####start######");
menuStart();
}
else //...ansonsten...
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Start bild");
// funktion für startbild
} */
menuStart();
}
void menuStart(void){
if(digitalRead(A0) == LOW && button_flag == 0)
{
menuFunctions(currentMenuItem + 1, 1, 0);
button_flag = 1;
previousMillis = millis();
beepsOnce();
}
if(digitalRead(A1) == LOW && button_flag == 0)
{
menuFunctions(currentMenuItem + 1, 0, 1);
button_flag = 1;
previousMillis = millis();
beepsOnce();
}
if(digitalRead(A2) == LOW && button_flag == 0)
{
++currentMenuItem;
if(currentMenuItem > numberOfMenuItems )
{
currentMenuItem = numberOfMenuItems ;
}
button_flag = 1;
previousMillis = millis();
beepsOnce();
}
else if(digitalRead(A3) == LOW && button_flag == 0)
{
currentMenuItem--;
if(currentMenuItem < 0)
{
currentMenuItem = 0;
}
button_flag = 1;
previousMillis = millis();
beepsOnce();
}
if(currentMenuItem != previousMenuItem)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Projekt X Menu ");
lcd.setCursor(0, 1);
lcd.print(MenuItems [currentMenuItem]);
menuFunctions(currentMenuItem + 1, 0, 0);
previousMenuItem = currentMenuItem;
}
if(millis() - previousMillis >= 400)
{
previousMillis = millis();
button_flag = 0;
}
}