1#include <ItemList.h>
2#include <LcdMenu.h>
3#include <MenuScreen.h>
4#include <display/LiquidCrystal_I2CAdapter.h>
5#include <input/KeyboardAdapter.h>
6#include <renderer/CharacterDisplayRenderer.h>
7
8#define LCD_ROWS 2
9#define LCD_COLS 16
10
11std::vector<const char*> colors = {"Red", "Green", "Blue", "Orange", "Aqua", "Yellow", "Purple", "Pink"};
12std::vector<uint8_t> nums = {5, 7, 9, 12, 32};
13
14// Initialize the main menu items
15// clang-format off
16MENU_SCREEN(mainScreen, mainItems,
17 ITEM_BASIC("List demo"),
18 ITEM_LIST("Color", colors, [](const uint8_t color) { Serial.println(colors[color]); }),
19 ITEM_LIST("Num", nums, [](const uint8_t num) { Serial.println(nums[num]); }, 0, "%d", 0, true),
20 ITEM_BASIC("Example"));
21// clang-format on
22
23// Construct the LcdMenu
24LiquidCrystal_I2C lcd(0x27, LCD_COLS, LCD_ROWS);
25CharacterDisplayRenderer renderer(new LiquidCrystal_I2CAdapter(&lcd), LCD_COLS, LCD_ROWS);
26LcdMenu menu(renderer);
27KeyboardAdapter keyboard(&menu, &Serial);
28
29void setup() {
30 Serial.begin(9600);
31 renderer.begin();
32 menu.setScreen(mainScreen);
33}
34
35void loop() {
36 keyboard.observe();
37}