#include <LiquidCrystal_I2C.h>
#include "ItemSubMenu.h"
#include "LcdMenu.h"
#include "commandProccesors.h"
#define LCD_ROWS 2
#define LCD_COLS 16
// Konfiguriere Tastaturtasten (ASCII)
#define UP 56 // NUMPAD 8
#define DOWN 50 // NUMPAD 2
#define ENTER 53 // NUMPAD 5
#define BACK 55 // NUMPAD 7
// Pins für die Taster definieren:
#define UP_BUTTON_PIN 2
#define DOWN_BUTTON_PIN 3
#define ENTER_BUTTON_PIN 4
#define BACK_BUTTON_PIN 5
// Pin für die LED definieren:
#define LED_PIN 6
extern MenuItem* settingsMenu[];
// Initialisiere die Hauptmenü-Elemente
MAIN_MENU(
ITEM_BASIC("Start service"),
ITEM_BASIC("Connect to WiFi"),
ITEM_SUBMENU("Settings", settingsMenu),
ITEM_BASIC("Blink SOS"),
ITEM_BASIC("Blink random")
);
/**
* Create submenu and precise its parent
*/
SUB_MENU(settingsMenu, mainMenu,
ITEM_BASIC("Backlight"),
ITEM_BASIC("Contrast")
);
// Konstruiere das LcdMenu
LcdMenu menu(LCD_ROWS, LCD_COLS);
// Variable für die Blinkfrequenz in Millisekunden
unsigned long blinkFrequency = 1000; // 1 Sekunde
unsigned long previousMillis = 0;
bool ledState = LOW;
void setup() {
Serial.begin(9600);
// Initialisiere LcdMenu mit den Menü-Elementen
menu.setupLcdWithMenu(0x27, mainMenu);
// Setze Taster-Pins als Eingänge mit Pull-up-Widerständen
pinMode(UP_BUTTON_PIN, INPUT_PULLUP);
pinMode(DOWN_BUTTON_PIN, INPUT_PULLUP);
pinMode(ENTER_BUTTON_PIN, INPUT_PULLUP);
pinMode(BACK_BUTTON_PIN, INPUT_PULLUP);
// Setze den LED-Pin als Ausgang
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// Überprüfe, ob eine Taste gedrückt wurde
if (digitalRead(UP_BUTTON_PIN) == LOW) {
menu.up();
delay(200); // Entprellzeit
} else if (digitalRead(DOWN_BUTTON_PIN) == LOW) {
menu.down();
delay(200); // Entprellzeit
} else if (digitalRead(ENTER_BUTTON_PIN) == LOW) {
menu.enter();
delay(200); // Entprellzeit
} else if (digitalRead(BACK_BUTTON_PIN) == LOW) {
menu.back();
delay(200); // Entprellzeit
}
// LED-Blinken implementieren
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= blinkFrequency) {
// Speichere den aktuellen Zeitpunkt
previousMillis = currentMillis;
// Ändere den LED-Zustand
ledState = !ledState;
digitalWrite(LED_PIN, ledState);
}
}
The LcdMenu library as local files