// Test del LCDMenu https://github.com/forntoh/LcdMenu
#include <ItemIntRange.h>
#include <ItemList.h>
#include <ItemToggle.h>
#include <LcdMenu.h>
#include <MenuScreen.h>
#include <SimpleRotary.h>
#include <display/LiquidCrystal_I2CAdapter.h>
#include <input/SimpleRotaryAdapter.h>
#include <renderer/CharacterDisplayRenderer.h>
// Schermo LCD 2004 I2C
#define LCD_COLUMNS 20 // Numero di colonne dello schermo LCD
#define LCD_ROWS 4 // Numero di righe dello schermo LCD
#define LCD_I2C_ADDRESS 0x27 // Indirizzo I2C seriale dello schermo LCD
// Encoder rotativo
#define RE_CLK_PIN 2 // Pin digitale di Arduino su cui è collegato il pin CLK (pin A) dell'encoder rotativo
#define RE_DT_PIN 3 // Pin digitale di Arduino su cui è collegato il pin DT (pin B) dell'encoder rotativo
#define RE_SW_PIN 4 // Pin digitale di Arduino su cui è collegato il pin SW (pulsante) dell'encoder rotativo
void callback(int pos);
void colorsCallback(uint8_t pos);
void toggleBacklight(bool isOn);
String colors[] = {"Red", "Green", "Blue", "Orange", "Aqua", "Yellow", "Purple", "Pink"};
MENU_SCREEN(mainScreen, mainItems,
ITEM_BASIC("Connect to WiFi"),
ITEM_STRING_LIST("Color", colors, 8, colorsCallback),
ITEM_BASIC("Blink SOS"),
ITEM_INT_RANGE("Dist", 0, 50, 0, callback, "%dm"),
ITEM_TOGGLE("Backlight", toggleBacklight),
ITEM_BASIC("Blink random"));
LiquidCrystal_I2C lcd(LCD_I2C_ADDRESS, LCD_COLUMNS, LCD_ROWS);
LiquidCrystal_I2CAdapter lcdAdapter(&lcd);
CharacterDisplayRenderer renderer(&lcdAdapter, LCD_COLUMNS, LCD_ROWS);
LcdMenu menu(renderer);
SimpleRotary encoder(RE_CLK_PIN, RE_DT_PIN, RE_SW_PIN);
SimpleRotaryAdapter rotaryInput(&menu, &encoder);
// *************************************
// * Impostazioni inizali dello sketch *
// *************************************
void setup(void)
{
Serial.begin(9600);
renderer.begin();
menu.setScreen(mainScreen);
}
// **********************************
// * Ciclo principale dello schetch *
// **********************************
void loop(void)
{
rotaryInput.observe();
}
void toggleBacklight(bool isOn)
{
lcdAdapter.setBacklight(isOn);
}
void callback(int pos)
{
Serial.println(pos);
}
void colorsCallback(uint8_t pos)
{
Serial.println(colors[pos]);
}