Menú genérico/sistema de interactividad para el marco Arduino
Sistema de navegación completo automatizado o de código de usuario. Con este sistema, puede definir menús, submenus, campos de entrada y otros objetos de iteración que tratan todas las entradas/salida y pueden llamar al controlador definido por el usuario como resultado de la iteración del usuario. La función del usuario se puede operar como una sola acción llamada en hacer clic/ingresar o como una función impulsada por eventos que responde a los eventos de enfoque en/out o ingrese/ESC. El sistema está diseñado como un sistema de votación que no bloquea, lo que permite que se ejecute la tarea concurrente. Opcionalmente, el sistema se puede operar en modo semiautomado, emitiendo el comando de navegación desde el código de usuario.
Ver la 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));
}Los complementos son combinaciones de menú particulares o elementos de comportamientos y/o dibujo personalizados.
Algunos complementos pueden ser específicos de la plataforma o requerir algo de hardware.
Algunas aplicaciones/tutoriales utilizando Arduinomenu (versiones actuales y anteriores).
¿Tienes otro? Por favor, avíseme en Gitter o envíeme un correo electrónico.
Script Arduino para sensor de temperatura y temporizador. Permite encender el calentador y la luz en consecuencia para programar
https://github.com/vikulin/lcd_lat
Project-GlasskilnController Haln de calor eléctrico para hacer "vidrio cálido"
https://arduinoinfo.mywikis.net/wiki/project-glasskilncontroller
Arduinomenu Demo ttgo t-Display Tutorial impresionante.
https://sites.google.com/site/jmaathuis/arduino/lilygo-ttgo-tdisplay-esp32/arduinomenu-demo-ttgo-tdisplay
Tutorial de Arduinomenu de interfaz MVC
https://zaragozamakerspace.com/index.php/courses/mvc-interface/
Arduino Cortador de cinta de cobre automático
https://www.ththingiverse.com/thing:3557719
Recarga de calibre de nivel de tolva de polvo y alarma
https://github.com/nathandarnell/reloading-powder-hopper---level-pauge-and-larm
ServoBox Servo Tester & Monitor
https://github.com/jarkman/servoBox
Panobot un robot panorama
https://github.com/robertfach/panobot
Secuenciador de rendimiento MIDI basado en microcontrolador de bucle-bucle de adolescentes
https://github.com/newdigate/teensy-midi-looper
AmplifierControl automatice el procedimiento para encender/apagar el amplificador y la decodificación de la banda de Kenwood
https://github.com/petrlab/amplifiercontrol
SPNA An Analizador de red de puertos individuales Arduino (SPNA)
https://github.com/tczerwonka/spna
Lrduino en Sistema de calibre multice de automóvil - STM32, SSD1306, MAX31856, ADXL345, ELM327
https://github.com/bennehboy/lrduino
LRDUINOTD5 en el sistema de calibre multice de automóvil - STM32, SSD1306, MAX31856, ADXL345, L9637D, TD5 ECU
https://github.com/bennehboy/lrduinotd5
Tom-radio Radio Internet Build
https://github.com/evfool/thom-radio
Midi_drums 7 Chanel Piezo Midi Drum Box con menú en LCD
https://github.com/sobollion/midi_drums
Monada
https://github.com/slbarker/balancingrobot
Swatili 50L Medidor de agua con control de válvula, LCD, botones, RTC y Hall Effect Pulse Reader
https://github.com/daniel-leonard-robinson/swatili
Fielduino Hardware Generador PWM usando el menú para seleccionar Frecuencia y Dutty.
https://github.com/neu-rah/fielduino
Arduinomultidesktop concepto muldosktop para dispositivos de hardware
https://github.com/dontsovcmc/arduinomultidesktop
Smartgreenhouse
https://github.com/dontsovcmc/smartgreenhouse/tree/master/src
Proyecto de consola de depuración en serie de la consola .
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 - Instalar usando el Administrador de bibliotecas (Biblioteca Arduinomenu - Rui Azevedo)
Platformio - http://platformio.org/lib/show/1468/arduinomenu%20library
De serie
https://www.arduino.cc/en/reference/serial
Biblioteca LCD estándar Arduino
https://www.arduino.cc/en/reference/liquidcrystal
F LCDS de Malpartida
https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/home
Matthias Hertel PCF8574 Conductor
https://github.com/mathertel/liquidcrystal_pcf8574
Dispositivos Arduino TFT
https://www.arduino.cc/en/guide/tft
Ssd1306ascii
https://github.com/greiman/ssd1306ascii
Tft_espi
Una biblioteca de gráficos y fuentes compatibles con Arduino IDE para ESP8266 y ESP32
https://github.com/bodmer/tft_espi
Controlador TFT_HX8357
https://github.com/bodmer/tft_hx8357
Dispositivos GFX de Adafruit
https://github.com/adafruit/adafruit-gfx-library
Dispositivos Utft
http://www.rinkydinkelectronics.com/library.php?id=51
Dispositivos 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, 128X32, 128X32, 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, 240x64, 240xy T6963, 240x128, SBN1661, 122x32, LC7981, 160x80, LC7981, 240x64, LC7981, 240x128, LC7981, 320x64, SSD1351, HT1632, 24x16, FlipDisk, 28x14, virtual detectives virtuales, virtual.
Dispositivos U8G2 y U8X8
https://github.com/olikraus/u8g2_arduino
SSD1305 128X32_NONAME, SSD1305 128X32_NONAME, SSD1305 128X64_ADAFRUit, SSD1305 128X64_ADAFRUit, SSD1306 128X64_NONEn 128x64_noname, SSD1306 128X64_VCOMH0, SSD1306 128X64_ALT0, SH1106 128X64_NONAME, SH1106 128X64_VCOMH0, SH1106 128X64_WINSTAR, SH1106 128X64_NONAME, SH1106 128X64_WINSTAR, SH1106 72X40_WISE, SH1106 72X40_WISE, SH1106 64X32, SH1106 64X32, SH1107 64X128, SH1107 64X128, SH1107 Seeed_96x96, sh1107 Seeed_96x96, sh1107 128x18x128. 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 128X644 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, 602, ST7920 192x32, ST7920 192x32, ST7920 192x32, ST7920 128x64, ST7920 128x64, ST7920 128x64, LS013B7DH03 128x128, UC1701 EA_DOGS102, UC1701 MINI12864, PCD854444444444, PCD854, 8444ES PCF8812 96X65, HX1230 96X68, UC1604 JLX19264, UC1604 JLX19264, UC1608 ERC24064, UC1608 ERC24064, UC1608 ERC240120, UC1608 240x128, UC1608 240x128, UC1638 160x128, UC1610 EA_DOGXL160, UC1610 EA_DOGXL160, UC1611 EA_DOGM240, UC1611 EA_DOGM240, UC1611 EA_DOGXL240, UC16111111111111111111111111111111111111111111111111111111111111 EA_DOGXL240, UC1611 EW50850, UC1611 EW50850, ST7565 EA_DOGM128, ST7565 64128N, ST7565 Zolen_128x64, ST7565 LM6059, ST7565 LX12864, ST7565 ERC12864, ST7564, ST7565, ST7565, ST7565, ST7565, ST7565, ST7565, ST7565, ST7565, ST7565. NHD_C12864, ST7565 JLX12864, ST7565 NHD_C12832, UC1601 128X32, UC1601 128X32, ST7565 EA_DOGM132, ST7567 PI_132X64, ST7567 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 IST3020 ERC19264, SBN1661 122X32, SED1520 122x32, KS0108 128X64, KS0108 ERM19264, LC7981 160X80, LC7981 160X160, LC7981 240X128, T6963 240x128, T6963, T6963, T6963, T6963, T6963, T6963, T6963, T6963, T6963, T6963. 240x64, T6963 256x64, T6963 128x64, SSD1322 NHD_256X64, SSD1322 NHD_128X64, SSD1606 172X72, SSD1607 200X200, SSD1607 GD_200X200, OP IL3820 V2_296X128, SED1330 240X128, RA8835 NHD_240X128, RA8835 320X240, MAX7219 32X8, A2Printer 384x240
Dispositivos ucglib
https://github.com/olikraus/ucglib_arduino
ST7735, ILI9163, ILI9325, ILI9341, ILI9486, LD50T6160, PCF8833, SEPS225, SSD1331, SSD1351, HX8352C
Terminal de ANSI en serie
https://github.com/neu-rah/ansistream
Grove RGB LCD I2C 2x16
https://wiki.seeedstudio.com/grove-lcd_rgb_backlight/
Navegador web
Web JSON
Redes web
Nota: ESP8266 requerirá una biblioteca de transmisión, incluso si no usa la interfaz web, junto con #include <menuIO/esp8266Out.h>
Dependiendo de su controlador de salida, puede ser uno de (puede instalar ambos)
Serie https://www.arduino.cc/en/reference/serial
Quadencoder - Encoder genérico con PCint (Builtin)
Botones: teclado digital simple (Builtin)
Teclado genérico (sin PCint): configurable para teclados digitales o analógicos (Builtin)
Joystick analógico
Clickencoder https://github.com/0xpit/encoder
Teclado matriz
http://playground.arduino.cc/code/keypad https://github.com/nullkraft/keypad
Keypad de matriz I2C basado en PCF8574 Keypad de matriz basado en https://github.com/whatnick/i2ckypad
API de navegación de menú de entrada de entrada definida por el usuario
Navegador web (experimental) Cuando se usa dispositivos ESP
Esta biblioteca depende de las siguientes bibliotecas:
Dependiendo del tipo de entrada o salida, se pueden necesitar otras bibliotecas. Esencialmente cualquier biblioteca necesaria para sus dispositivos.
Más información en
Páginas Wiki, problemas o R-Site.net
Por favor, informe errores, problemas o ideas de mejora, aprecio los comentarios. Gracias.
En el informe de problemas, especifique los controladores o dispositivos de entrada y salida, así como la plataforma de destino.
El codificador ahora necesita begin () para ser llamado a la configuración (2.x)
La entrada se lee a partir de transmisiones genéricas, incluidos transmisiones simples para codificadores y teclados, siempre que el controlador de codificadores usa pull -ups internos y lógica inversa
Embalaje de transmisión múltiple para la transmisión de entrada para mezclar la secuencia del codificador con el teclado del codificador (generalmente 1 o 2 teclas)
Opción InvertfieldKeys eliminada, la inverción ahora es compatible con objetos de menú de menú.
Regresión: todavía necesitaba aliviar casos de entrada simples.
numValueInput se mueve al objeto Menuin
Opciones adicionales de Navoot , previamente en el objeto de opciones globales
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 La serie ya no se acepta como una entrada directamente, use serialin en su lugar
PrintTO La función miembro cambió de:
Used printTo (navRoot&, bool ,menuOut&, idx_t , idx_t );a
Used printTo (navRoot&, bool ,menuOut&, idx_t , idx_t , idx_t = 0 );Esto solo debería afectar los componentes personalizados
Las entradas ahora son de clase Menuin, derivadas de la transmisión, pero incluyen funciones de indicador para la inversión del eje de campo por clase de entrada.
falso = Menú Continuar
verdadero = menú de salida