Общая меню/система интерактивности для Arduino Framework
Полный автоматический или навигационный код пользовательского кода. С этой системой вы можете определить меню, подменечный, поля ввода и другие итерационные объекты, которые имеют дело со всеми вводом/выводами и могут вызвать обработчик, определенный пользователем, в результате итерации пользователя. Пользовательская функция может выполняться как единое действие, вызванное на клик/enter или в качестве функции, управляемой событиями, отвечающей на события Focus/Out или ESC/ESC. Система разработана как не блокирующая система опроса, позволяющая выполнять одновременную задачу. Необязательно система может работать в полуавтоматическом режиме, выдавая навигационную команду из кода пользователя.
Смотрите вики
# include < menu.h >
# include < menuIO/serialOut.h >
# include < menuIO/chainStream.h >
# include < menuIO/serialIn.h >
using namespace Menu ;
# define LEDPIN LED_BUILTIN
# define MAX_DEPTH 1
unsigned int timeOn= 10 ;
unsigned int timeOff= 90 ;
MENU (mainMenu, " Blink menu " , Menu::doNothing, Menu::noEvent, Menu::wrapStyle
,FIELD(timeOn, " On " , " ms " , 0 , 1000 , 10 , 1 , Menu::doNothing, Menu::noEvent, Menu::noStyle)
,FIELD(timeOff, " Off " , " ms " , 0 , 10000 , 10 , 1 ,Menu::doNothing, Menu::noEvent, Menu::noStyle)
,EXIT( " <Back " )
);
serialIn serial (Serial);
MENU_INPUTS (in,&serial);
MENU_OUTPUTS (out,MAX_DEPTH
,SERIAL_OUT(Serial)
,NONE // must have 2 items at least
);
NAVROOT (nav,mainMenu,MAX_DEPTH,in,out);
void setup () {
pinMode (LEDPIN, OUTPUT);
Serial. begin ( 115200 );
while (!Serial);
Serial. println ( " Menu 4.x " );
Serial. println ( " Use keys + - * / " );
Serial. println ( " to control the menu navigation " );
}
bool blink ( int timeOn, int timeOff) { return millis ()%( unsigned long )(timeOn+timeOff)<( unsigned long )timeOn;}
void loop () {
nav. poll ();
digitalWrite (LEDPIN, blink (timeOn,timeOff));
}Плагины представляют собой конкретные комбинации меню или поведение, настроенное на элементы и/или рисунок.
Некоторые плагины могут быть специфичными для платформы или требуют некоторого оборудования.
Некоторые приложения/учебные пособия с использованием Arduinomenu, (текущие и старые версии).
У тебя есть другой? Пожалуйста, дайте мне знать на Gitter или напишите мне.
Сценарий Arduino для датчика температуры и таймера. Это позволяет включать обогреватель и зажигать соответственно, чтобы график
https://github.com/vikulin/lcd_lat
Project-GlasskilnController Electrical Heated Kiln для изготовления «теплого стекла»
https://arduinoinfo.mywikis.net/wiki/project-glasskilncontroller
Arduinomenu demo ttgo t-display потрясающий учебник.
https://sites.google.com/site/jmaathuis/arduino/lilygo-ttgo-t-display-esp32/arduinomenu-demo-tgo-t-display
MVC-Interface Arduinomenu Учебное пособие
https://zaragozamakerspace.com/index.php/courses/mvc-interface/
Arduino Automatic Mpopper Tapt Rutter
https://www.thingiverse.com/thing:3557719
Перезагрузка порошка бункера и тревога
https://github.com/nathandarnell/reloading-powder-hopper-level-gauge-and-alarm
Сервобокс -сервоприводный тестер и монитор
https://github.com/jarkman/servobox
Панобот панорама робот
https://github.com/robertfach/panobot
Teensy-Midi-Looper Microcontroller Midi Sequencer Midi Performance
https://github.com/newdigate/teensy-midi-looper
AmplifierControl Automate Процедура для включения/выключения усилителя и полосы декода Кенвуда
https://github.com/petrlab/amplifiercontrol
SPNA Arduino One Port Analyzer (SPNA)
https://github.com/tczerwonka/spna
Lrduino в автомобильной системе многоамериканской системы - STM32, SSD1306, MAX31856, ADXL345, ELM327
https://github.com/bennehboy/lrduino
LRDUINOTD5 в автомобильной системе многоамериканской системы - STM32, SSD1306, MAX31856, ADXL345, L9637D, TD5 ECU
https://github.com/bennehboy/lrduinotd5
Thom-Radio Internet Radio Build
https://github.com/evfool/thom-radio
Midi_drums 7 Chanel Piezo Midi Midi Drum Box с меню на ЖК -дисплее
https://github.com/sobollion/midi_drums
Балансировкаробот
https://github.com/slbarker/balancingrobot
Swatili 50l Water Meter с управлением клапаном, ЖК -дисплей, кнопки, RTC и Hall Effect Reader Reader
https://github.com/daniel-leonard-robinson/swatili
Fielduino Hardware Generator с использованием меню для выбора частоты и датти.
https://github.com/neu-rah/fielduino
Arduinomultididesktop Multidesktop Concept для аппаратных устройств
https://github.com/dontsovcmc/arduinomultidesktop
Smartgreenhouse
https://github.com/dontsovcmc/smartgreenhouse/tree/master/src
Консоль.
https://github.com/malachib/console.arduino
Atmel Avr, Atmel Sam, Espressif 32, Espressif 8266, Intel Arc32, Microchip PIC32, Nordic NRF51, Nordic NRF52, ST STM32, Teensy, TI MSP430
Arduino IDE - установить с использованием менеджера библиотеки (библиотека Arduinomenu - rui azevedo)
Platformio - http://platformio.org/lib/show/1468/arduinomenu%20library
Сериал
https://www.arduino.cc/en/reference/serial
Стандартная ЖК -библиотека Arduino
https://www.arduino.cc/en/reference/liquidcrystal
F Malpartida's LCDS
https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/home
Matthias Hertel PCF8574 Driver
https://github.com/mathertel/liquidcrystal_pcf8574
Arduino TFT Devices
https://www.arduino.cc/en/guide/tft
SSD1306ASCII
https://github.com/greiman/ssd1306ascii
Tft_espi
Библиотека Arduino IDE, совместимая с графикой и шрифтами для ESP8266 и ESP32
https://github.com/bodmer/tft_espi
TFT_HX8357 Driver
https://github.com/bodmer/tft_hx8357
Устройства GFX от Adafruit
https://github.com/adafruit/adafruit-gfx-library
Устройства UTFT
http://www.rinkydinkelectronics.com/library.php?id=51
Устройства U8GLIB
https://github.com/olikraus/u8glib_arduino
SSD1306, 128x64, SSD1306, 128x32, SSD1306, 64x48, SSD1309, 128x64, SSD1322, 256x64, SSD1325, 128x64, SSD1327, 96x96, SH1106, 128x64, UC1601, 128x32, UC1608, 240x64, UC1610, 160x104, UC1611, 240x64, UC1611, 240x128, UC1701, 128x64, UC1701, 102x64, ST7565, 128x64, ST7565, 128x32, ST7920, 128x64, ST7920, 192x32, ST7920, 202x32, LD7032, 60x32, PCD8544, 84x48, TLS8204 , 84x48, PCF8812 , 96x65, KS0108 , 128x64, T6963, 128x64, T6963, 128x128, T6963, 240x64, T6963, 240x128, SBN1661, 122x32, LC7981, 160x80, LC7981, 240x64, LC7981, 240x128, LC7981, 320x64, SSD1351, HT1632, 24x16, Flipdisp, 28x, 28X14, 28x, 28x, 28x, 28x, 28x, 28X14, 28x, 28x141, 28x64, SSD1351, HT1632, 24x16, FlipdispisySp
Устройства U8G2 и U8X8
https://github.com/olikraus/u8g2_arduino
SSD1305 128x32_NONAME, SSD1305 128X32_NONAME, SSD1305 128X64_ADAFRUIT, SSD1305 128X64_ADAFRIT 128x64_NONAME, SSD1306 128x64_VCOMH0, SSD1306 128x64_ALT0, SH1106 128x64_NONAME, SH1106 128x64_VCOMH0, SH1106 128x64_WINSTAR, SH1106 128x64_NONAME, SH1106 12814_WINSTAR, SH1106 128X64_NONAME, SH1106 1288814_WINSTAR, SH1106 128X64_NAMEH, SH1106 128814_WINSTAR, SH1106 128X64_NAMEH, SH1106. SH1106 128X64_WINSTAR, SH1106 72X40_WISE, SH1106 72X40_WISE, SH1106 64X32, SH1106 64X32, SH1107 64x128, SH1107 64x128, SH1107 Seeed_96x96, SH1107 Seeed_9666, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107, SH1107. SH1107 128x128, SH1122 256x64, SH1122 256x64, SSD1306 128x32_Univision, SSD1306 128x32_Univision, SSD1306 64x48_er, SSD1306 64x48_er, SSD1306 48x64_WINSTAR6, SSD1306 64x48_er, SSD1306 48x64_WINSTAR6. 48x64_winstar, SSD1306 64x32_NONAME, SSD1306 64X32_1F, SSD1306 64x32_NONAME, SSD1306 64x32_1F, SSD1306 96x16_er, SSD1306 96x16_er, SSD13091334134134_RIMER4, SSD1309, SSD1309, SSD13309. SSD1309 128X64_NONAME2, SSD1309 128X64_NONAME0, SSD1309 128X64_NONAME0, SSD1325 NHD_128X64, SSD1325 NHD_128X64, SSD1326 ER_256X32, SSD1326 ER_256X32, SSD1327 SEEED_96X96, SSD1327 SEEED_96X96, SSD1327 MIDAS_128X128, SSD1327 MIDAS_128X128, SSD1329 128X96_NONAME, LD7032 60X32, LD7032 60X32, ST7920 192X32, ST7920 192X32, ST7920 192X32, ST7920 128X64, ST7920 128X64, ST7920 128X64, LS013B7DH03 128X128, UC1701 EA_DOGS102, UC1701 MINI12864, PCD8544 84X48, PCF8812 96X65, HX1230 96X68, UC1604 JLX19264, UC1604 JLX19264, UC1608 ERC24064, UC1608 ERC24064, UC1608 ERC240120, UC1608 erc24064, UC1608 ERC240120, UC1608 erc24064, UC1608 ERC240120, UC1608 erc24064, UC1608 ERC240120, UC1608064, UC1608 ERC240120, UC1608 erc24064, UC1608 ERC240120. 240x128, UC1608 240x128, UC1638 160X128, UC1610 EA_DOGXL160, UC1610 EA_DOGXL160, UC1611 EA_DOGM240, UC1611 EA_DOGM240, UC1611 EA_DOGXL240, UC1611111111111111111111111111111111111111111111111er111н, UC161111111111111111111111111111111111111111111111111111111111111н, U EA_DOGXL240, UC1611 EW50850, UC1611 EW50850, ST7565 EA_DOGM128, ST7565 64128N, ST7565 ZOLEN_128X64, ST7565 LM6059, ST7565 LX12864, ST7565 ERC12864, ST7565 NHD_C12864, ST7565 JLX12864, ST7565 NHD_C12832, UC1601 128X32, UC1601 128X32, ST7565 EA_DOGM132, ST7567 PI_132X64, ST7567 JLX12864, ST7567 ENH_DG128064, ST7567 ENER_DG128064I, ST7588 JLX12864, ST7588 JLX12864, ST75256 JLX256128, ST75256 JLX256128, ST75256 JLX256000000000000000000000000000000000000000000000000 что -либо JLX256160, ST75256 JLX240160, ST75256 JLX240160, ST75256 JLX25664, ST75256 JLX25664, ST75256 JLX172104, ST75256 JLX172104, NT7534646464646464646464646464646464646464646468464684646468468468468468466464684684684646468468468468468468468468464668464684 IST3020 ERC19264, SBN1661 122X32, SED1520 122X32, KS0108 128X64, KS0108 ERM19264, LC7981 160X80, LC7981 160X160, LC7981 240X128, T6963 240X128, T6963 240x64, T6963 256x64, T6963 128x64, SSD1322 NHD_256X64, SSD1322 NHD_128X64, SSD1606 172X72, SSD1607 200X200, SSD1607 GD_200X200, il388888888888888888888888888820, il388888888888888888888888888888888888888888888888888820, lepsd1607, SSD1607, lepsd1607, SSD1607, SSD1607, SSD1607, SSD1607, SSD1607, SSD1607. IL3820 V2_296X128, SED1330 240x128, RA8835 NHD_240x128, RA8835 320x240, MAX7219 32X8, A2PRINTE 384X240
Устройства Ucglib
https://github.com/olikraus/ucglib_arduino
ST7735, ILI9163, ILI9325, ILI9341, ILI9486, LD50T6160, PCF8833, SEPS225, SSD1331, SSD1351, HX8352C
Серийный терминал ANSI
https://github.com/neu-rah/ansistream
Grove RGB LCD I2C 2x16
https://wiki.seeedstudio.com/grove-lcd_rgb_backlight/
Веб -браузер
Веб -json
Веб -вагоны
Примечание: ESP8266 потребует потоковой библиотеки, даже если не использовать веб -интерфейс, а также #include <menuIO/esp8266Out.h>
В зависимости от вашего выходного драйвера это может быть один из (может установить оба)
Serial https://www.arduino.cc/en/reference/serial
Quadenceder - универсальный энкодер с использованием pcint (встроенный)
Кнопки - простая цифровая клавиатура (встроенная)
Общая клавиатура (без PCINT) - настраивается для цифровых или аналоговых клавиатур (встроенный)
Аналоговый джойстик
Clickencoder https://github.com/0xpit/encoder
Матричная клавиатура
http://playground.arduino.cc/code/keypad https://github.com/nullkraft/keypad
PCF8574 на основе клавиатуры Matrix I2C https://github.com/whatnick/i2ckeypad
Пользователь определенный входной меню навигационного меню API
Веб -браузер (экспериментальный) при использовании устройств ESP
Эта библиотека зависит от следующих библиотек:
В зависимости от типа ввода или вывода, могут потребоваться другие библиотеки. По сути, любая библиотека, необходимая для ваших устройств.
больше информации на
Вики-страницы, проблемы или R-site.net
Пожалуйста, сообщите об ошибках, проблемах или идеях улучшения, я адапту обратной связи. Спасибо.
В отчете о проблемах, пожалуйста, укажите входные и выходные драйверы или устройства, а также целевую платформу.
Encoder теперь нуждается в начале () для вызова при настройке (2.x)
Ввод считывается из общих потоков, включающих простые потоки для кодеров и клавиатур - при условии, что драйвер энкодера использует внутренние подтягивания и обратную логику
Многочисленная упаковка для ввода для смешивания потока энкодера с клавиатурой энкодера (обычно 1 или 2 клавиши)
Опция InvertfieldKeys удалена, инверция теперь поддерживается конкретными объектами меню.
Регрессия: все еще необходима для облегчения простых входных случаев.
numvalueInput перенесено в объект меню.
Дополнительные варианты Navroot , ранее на объекте Global Options
bool nav2D= false ; // not used
bool canExit= true ; // v4.0 moved from global options
bool useUpdateEvent= false ; // if false, use enterEvent when field value is changed.
idx_t inputBurst= 1 ; // limit of inputs that can be processed before output Сериал больше не принимается как вход непосредственно, вместо этого используйте Serialin
printto участничная функция изменилась с:
Used printTo (navRoot&, bool ,menuOut&, idx_t , idx_t );к
Used printTo (navRoot&, bool ,menuOut&, idx_t , idx_t , idx_t = 0 );Это должно влиять только на индивидуальные компоненты
Входные данные теперь из класса с меню, полученные из потока, но включая функции флага для инверсии оси поля на входной класс.
False = Продолжить меню
True = Exit Menu