#include <ItemIntRange.h>
#include <ItemList.h>
#include <ItemToggle.h>
#include <ItemSubMenu.h>
#include <ItemInput.h>
#include <LcdMenu.h>
#include <MenuScreen.h>
#include <SimpleRotary.h>
#include <display/LiquidCrystal_I2CAdapter.h>
#include <input/SimpleRotaryAdapter.h>
#include <renderer/CharacterDisplayRenderer.h>
#define LCD_ROWS 2
#define LCD_COLS 16
extern MenuScreen* settingsScreen;
extern MenuScreen* settings2Screen;
// Declare the callbacks
void inputCallback(int value);
void colorsCallback(uint8_t pos);
void toggleBacklight(bool isOn);
String colors[] = {"Red", "Green", "Blue", "Orange", "Aqua", "Yellow", "Purple", "Pink"};
// clang-format off
MENU_SCREEN(mainScreen, mainItems,
ITEM_SUBMENU("CONFIGURACION", settingsScreen),
ITEM_SUBMENU("MANUAL", settings2Screen));
// Create submenu and precise its parent
MENU_SCREEN(settingsScreen, settingsItems,
ITEM_INT_RANGE("T.Esp", 0, 500, 100, [] (int value) {inputCallback}, "%04 mS"),
ITEM_BASIC("Tiempo Soplado"),
ITEM_BASIC("Longitud Eti"),
ITEM_BASIC("Ventana"),
ITEM_BASIC("Velocidad"),
ITEM_BASIC("Acel/Decel"),
ITEM_BASIC("Mark off-on"),
ITEM_BASIC("Fallas Mark"),
ITEM_BASIC("exit"));
MENU_SCREEN(settings2Screen, settings2Items,
ITEM_BASIC("En manual"),
ITEM_BASIC("Jog etiqueta"),
ITEM_BASIC("Aire"),
ITEM_BASIC("Corte"),
ITEM_BASIC("Jog etiqueta"));
// clang-format on
LiquidCrystal_I2C lcd(0x27, LCD_COLS, LCD_ROWS);
LiquidCrystal_I2CAdapter lcdAdapter(&lcd);
CharacterDisplayRenderer renderer(&lcdAdapter, LCD_COLS, LCD_ROWS);
LcdMenu menu(renderer);
SimpleRotary encoder(32, 33, 25);
SimpleRotaryAdapter rotaryInput(&menu, &encoder);
void setup() {
Serial.begin(9600);
renderer.begin();
menu.setScreen(mainScreen);
}
void loop() { rotaryInput.observe(); }
// Define the callbacks
void toggleBacklight(bool isOn) {
lcdAdapter.setBacklight(isOn);
}
void inputCallback(int value) {
Serial.print("entrada");
Serial.println(value);
}
void colorsCallback(uint8_t pos) {
Serial.println(colors[pos]);
}