Generisches Menü-/Interaktivitätssystem für den Arduino -Framework
Vollständig automatisierter oder benutzercodegesteuerter Navigationssystem. Mit diesem System können Sie Menüs, Untermenüs, Eingabefelder und andere Iterationsobjekte definieren, die sich mit allen Eingaben/Ausgaben befassen und den Benutzer definierten Handler als Ergebnis der Benutzer -Iteration aufrufen können. Die Benutzerfunktion kann als einzelne Aktion betrieben werden, die auf Klick/Eingabetaste oder als ereignisgesteuerte Funktion reagiert, um auf den Fokus ein- oder einzugeben oder ESC -Ereignisse zu erhalten. Das System ist als nicht blockierendes Wahllokal ausgelegt, sodass eine gleichzeitige Aufgabe ausgeführt werden kann. Optional kann das System im semi-automatischen Modus betrieben werden, wobei der Navigationsbefehl aus dem Benutzercode ausgegeben wird.
Siehe das Wiki
# 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));
}Plugins sind bestimmte Menükombinationen oder kundenspezifische Verhaltensweisen und/oder Zeichnen.
Einige Plugins sind möglicherweise plattformspezifisch oder erfordern eine Hardware.
Einige Anwendungen/Tutorials unter Verwendung von Arduinomenu (aktuelle und ältere Versionen).
Hast du noch einen? Bitte lassen Sie es mich auf dem Gitter wissen oder mir eine E -Mail senden.
Arduino -Skript für Temperatursensor und Timer. Es ermöglicht das Einschalten von Heizungen und Licht entsprechend, um zu planen
https://github.com/vikulin/lcd_lat
Project-GlasskilnController Elektrisch erhitztes Ofen zur Herstellung von "warmem Glas"
https://arduinoinfo.mywikis.net/wiki/project-glasskilncontroller
Arduinomenu Demo Ttgo T-Display Fantastisches Tutorial.
https://sites.google.com/site/jmaathuis/arduino/lilygo-tgo-t---Splay-esp32/arduinomenu-demo-tgo-t--display
MVC-Schnittstelle Arduinomenu Tutorial
https://zaragozamakerspace.com/index.php/courses/mvc-interface/
ARDUINO Automatischer Kupferbandschneider
https://www.ingiverse.com/Thing:3557719
Laden Sie die Pulver -Trichter -Pegel -Messgerät und Alarm neu
https://github.com/nathandarnell/reloading-powder-hopper-level-gauge-and-alarm
Servobox Servo Tester & Monitor
https://github.com/jarkman/servobox
Panobot ein Panorama -Roboter
https://github.com/robertfach/panobot
Teensy-Midi-Looper Microcontroller-basierter MIDI-Performance-Sequenzer
https://github.com/newdate/teensy-midi-looper
Verstärkercontrol Automatisierungsverfahren zum Einschalten des Ein-/Aus -Verstärkers und der Banddecodes von Kenwood
https://github.com/petrlab/amplifierControl
SPNA An Arduino Single Port Network Analyzer (SPNA)
https://github.com/tczerwonka/spna
LRduino im Auto Multi -Gauge -System - STM32, SSD1306, Max31856, ADXL345, ELM327
https://github.com/bennehboy/lrduino
LRduinotd5 im Auto -Multi -Gauge -System - 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 Drum Box mit Menü auf LCD
https://github.com/sobollion/midi_drums
BalancingRobot
https://github.com/slbarner/balancingRobot
Swatili 50L Wassermesser mit Ventilsteuerung, LCD, Knöpfen, RTC und Hall -Effekt -Pulsleser
https://github.com/daniel-leonard-robinson/swatili
Fielduino -Hardware -PWM -Generator Verwendet das Menü, um Frequenz und Dutty auszuwählen.
https://github.com/neu-rah/fielduino
Arduinomultidesktop Multidesktop -Konzept für Hardware -Geräte
https://github.com/dontsovcmc/arduinomultidesktop
SmartGreenhouse
https://github.com/dontsovcmc/smartgreenhouse/tree/master/src
console.arduino tragbares serielles Debug -Konsolenprojekt mit ILI9341
https://github.com/malachib/console.arduino
Atmel AVR, Atmel SAM, Espressif 32, Espresssif 8266, Intel Arc32, Microchip PIC32, Nordic Nrf51, Nordic Nrf52, ST STM32, Teensy, Ti Msp430
Arduino IDE - Installieren Sie mit dem Bibliotheksmanager (Arduinomenu Library - Rui Azevedo)
Plattformio - http://platformio.org/lib/show/1468/arduinomenu%20Library
Serie
https://www.arduino.cc/en/reference/serial
Standard Arduino LCD -Bibliothek
https://www.arduino.cc/en/reference/liquidcrystal
F Malpartidas LCDs
https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/home
Matthias Hertel PCF8574 Fahrer
https://github.com/matertel/liquidcrystal_pcf8574
Arduino TFT -Geräte
https://www.arduino.cc/en/guide/tft
SSD1306ascii
https://github.com/greiman/ssd1306ascii
Tft_espi
Eine Arduino IDE -kompatible Grafik- und Schriftartenbibliothek für ESP8266 und ESP32
https://github.com/bodmer/tft_espi
TFT_HX8357 Treiber
https://github.com/bodmer/tft_hx8357
Die GFX -Geräte von Adafruit
https://github.com/adafruit/adafruit-gfx-library
UTFT -Geräte
http://www.rinkydinkelectronics.com/library.php?id=51
U8Glib -Geräte
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, Flipdisk, 28x14, Virtual Screen Device
U8G2- und U8X8 -Geräte
https://github.com/olikraus/u8g2_arduino
SSD1305 128X32_NONAME, SSD1305 128X32_NONAME, SSD1305 128X64_ADAFURE, SSD1305 128x64_adafruit, SSD1306 128x64_noname, SSD1306 128x64_VCOMH0, SSD1306 128x6x64_vcomh0, SSD1306 128x6x64_vcomh0, SSD1306 128X64_VCOMH0, SSD1306 128X64_VCOM. SSD1306 128X64_NONAME, SSD1306 128X64_VCOMH0, SSD1306 128X64_ALT0, SH1106 128X64_NONAME, SH1106 128X64_VCOMH0, SH1106 128X64_WINSTAR, SH1106 128X64_NONAME, SH1106 128x64_vcomh0, sh1106 128x64_winstar, SH1106 72x40_Wise, SH1106 72x40_Wise, SH1106 64x32, SH1106 64x32, SH1107 64x128, SH1107 64x128, SH1107, SH1107, SH1107, SEINED_96X96, SH1107, SH1107, SH1107, SEINED_96X96, SH1107, SH1107 SH1107 128X128, SH1107 128X128, SH1122 256X64, SH1122 256X64, SSD1306 128X32_UNIVISION, SSD1306 128X32_UNIVISION, SSD1306 64X48_ER, SSD1306 64X48_ER, SSD1306 48X64_WINSTAR, SSD1306 48X64_WINSTAR, SSD1306 64X32_NONAME, SSD1306 64X32_1F, SSD1306 64X32_NONAME, SSD1306 64X32_1F, SSD1306 96X16_ER, SSD1306 96X16_ER, SSD1309 128X64_NONAME2, SSD1309 128X64_NONAME2, SSD1309 128X64_NONAME0, SSD1309 128X64_NONAME0, SSD1325 NHD_128X64, SSD1325 NHD_128X64, SSD1325 NHD_128x64, SSD1325 NHD_128X64, SSD1325 NHD_128X64, SSD1325 NHD_128X64, SSD1325 NHD_128X64, SSD1325 NHD_128X64, SSD1325 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 ERC240120, UC1608 240X128, UC1608 240X128, UC1638 160X128, UC1610 EA_DOGXL160, UC1610 EA_DOGXL160, UC1611 EA_DOGM240, UC1611 EA_DOGM240, UC1611 EA_DOGXL240, UC1611 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_132, ST7565 EA_DOGM132, ST7567 PI_132, ST7565, St. JLX12864, ST7567 ENH_DG128064, ST7567 ENH_DG128064I, ST7588 JLX12864, ST7588 JLX12864, ST75256 JLX256128, ST75256 JLX256128, ST75256 JLX256160, ST75256 JLX256160, ST75256 JLX240160, ST75256 JLX240160, ST75256 JLX25664, ST75256 JLX25664, ST75256 JLX172104, ST75256 JLX172104, NT7534 TG12864R, 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 200x 200, 200x 200, SSD1607 GD_200X200, #200, SSD1607 Gd_200X200, |200, SSD1607 Gd_200X200, |200, SSD1607 Gd_200X200, # #200, SSD1607 Gd_200X200, # #200, SSD1607 Gd_200X200, # #200, SSD1607 Gd_200X200, | 296x128, IL3820 V2_296X128, SED1330 240x128, RA8835 NHD_240X128, RA8835 320x240, MAX7219 32x8, A2PRINER 384X240
UCGlib -Geräte
https://github.com/olikraus/ucglib_arduino
ST7735, ILI9163, ILI9325, ILI9341, ILI9486, LD50T6160, PCF8833, SEPS225, SSD1331, SSD1351, HX8352C
Serien -ANSI -Terminal
https://github.com/neu-rah/ansistream
Grove RGB LCD I2C 2x16
https://wiki.seeedstudio.com/grove-lcd_rgb_backlight/
Webbrowser
Web JSON
Websockets
HINWEIS: ESP8266 benötigt eine Streaming -Bibliothek, auch wenn sie keine Weboberfläche verwenden, zusammen mit #include <menuIO/esp8266Out.h>
Abhängig von Ihrem Ausgangstreiber kann es sich um eine von (können beide installieren) sein
Serial https://www.arduino.cc/en/reference/serial
Quadencoder - Generisches Encoder mit PCINT (integriert)
Tasten - Einfache digitale Tastatur (integriert)
Generisches Tastatur (kein PCINT) - Konfigurierbar für digitale oder analoge Tastaturen (integriert)
Analoger Joystick
ClickCoder https://github.com/0xpit/encoder
Matrix -Tastatur
http://playground.arduino.cc/code/Keypad https://github.com/nullklraft/keypad
PCF8574 -basierte I2C -Matrix -Tastatur https://github.com/whatnick/i2ckeypad
Benutzerdefinierte Eingabe -Aufruf -Menünavigations -API
Webbrowser (experimentell) bei der Verwendung von ESP -Geräten
Diese Bibliothek hängt von den folgenden Bibliotheken ab:
Abhängig von der Art der Eingabe oder Ausgabe können andere Bibliotheken erforderlich sein. Im Wesentlichen jede Bibliothek, die für Ihre Geräte benötigt wird.
Weitere Informationen bei
Wiki-Seiten, Probleme oder R-Site.net
Bitte melden Sie Fehler, Probleme oder Verbesserungsideen, ich schütze das Feedback. Danke.
In Ausgabenberichten geben Sie bitte die Eingangs- und Ausgabe -Treiber oder -geräte sowie die Zielplattform an.
Der Encoder muss nun beginnen (), um auf Setup (2.x) aufgerufen zu werden.
Die Eingabe wird aus generischen Streams gelesen, enthalten einfache Streams für Encoder und Tastaturen - vorausgesetzt, Encodertreiber verwendet interne Klimmzüge und umgekehrte Logik
Mehrfachstreampackung für Eingaben zum Mischen von Encoder -Stream mit Encodertastatur (normalerweise 1 oder 2 Tasten)
InvertFieldkeys Option entfernt, wird die Invertion jetzt durch bestimmte Menüobjekte unterstützt.
Regression: Noch erforderlich, um einfache Eingangsfälle zu lindern.
NumvalueInput auf Menüinjekt verschoben
Navroot zusätzliche Optionen, zuvor auf globalem Optionsobjekt
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 Serielle wird nicht mehr als Eingang direkt akzeptiert. Verwenden Sie stattdessen Serialin
PRINTTO -MITGLIEDERFUNKTION VERWENDET:
Used printTo (navRoot&, bool ,menuOut&, idx_t , idx_t );Zu
Used printTo (navRoot&, bool ,menuOut&, idx_t , idx_t , idx_t = 0 );Dies sollte nur die kundenspezifischen Komponenten beeinflussen
Die Eingänge stammen jetzt aus der Klassenmenü, abgeleitet aus dem Stream, einschließlich der Flag -Funktionen für die Inversion der Feldachse pro Eingangsklasse.
False = Fortsetzung Menü
true = beendenmenü beenden