Menu genérico/sistema de interatividade para a estrutura Arduino
Sistema completo de navegação automatizado ou orientado por código de usuário. Com este sistema, você pode definir menus, submenus, campos de entrada e outros objetos de iteração que lidam com toda a entrada/saída e podem chamar o manipulador definido pelo usuário como resultado da iteração do usuário. A função do usuário pode ser operada como uma única ação chamada em clique/enter ou como uma função orientada a eventos, respondendo para focar eventos de entrada/out ou Enter/ESC. O sistema foi projetado como um sistema de votação sem bloqueio, permitindo que a tarefa simultânea seja executada. Opcionalmente, o sistema pode ser operado no modo semi-automático, emitindo o comando de navegação do código do usuário.
Veja o 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));
}Os plug -ins são combinações de menu específicas ou comportamentos personalizados e/ou desenho de itens.
Alguns plugins podem ser específicos da plataforma ou exigem algum hardware.
Algumas aplicações/tutoriais usando Arduinomenu (versões atuais e mais antigas).
Você tem outro? Por favor, avise -me sobre gitter ou me envie um e -mail.
Script Arduino para sensor de temperatura e temporizador. Permite ativar o aquecedor e acender de acordo com o agendamento
https://github.com/vikulin/lcd_lat
Project-GlasskilnController Solited Kiln para fazer "vidro quente"
https://arduinoinfo.mywikis.net/wiki/project-glasskilnController
Demoção Arduinomenu TTGO T-Display Awesome Tutorial.
https://sites.google.com/site/jmaathuis/arduino/lilygo-ttgo-t-display-esp32/arduinomenu-demo-ttgo-t-display
Tutorial de Arduinomenu da Interface MVC
https://zaragozamakerspace.com/index.php/courses/mvc-interface/
Cortador automático de fita de cobre Arduino
https://www.thingiverse.com/thing:3557719
Recarregar o medidor de nível de tremonha em pó e alarme
https://github.com/nathandarnnell/reloading-powder-hopper-level-gauge-and-alarm
Servo servo testador e monitor
https://github.com/jarkman/servbox
Panobot um robô panorama
https://github.com/robertfach/panobot
Sequenciador de desempenho MIDI baseado em microcontrolador de microcontrolador teensy-midi-looper
https://github.com/newdigate/teensy-midi-looper
Procedimento automatizado do AmplifierControl para ligar/desligar o amplificador e a decodificação da banda de Kenwood
https://github.com/petrlab/amplifierControl
SPNA Um analisador de rede portuária única Arduino (SPNA)
https://github.com/tczerwonka/spna
LRduino no sistema de bitola multi -bitola - STM32, SSD1306, MAX31856, ADXL345, ELM327
https://github.com/bennehboy/lrduino
LRDUINOTD5 no sistema de vários medidores - STM32, SSD1306, MAX31856, ADXL345, L9637D, TD5 ECU
https://github.com/bennehboy/lrduinotd5
THOM-RADIO Internet Radio Build
https://github.com/evfool/thom-riadio
Midi_drums 7 Chanel Piezo Midi Box com menu no LCD
https://github.com/sobollion/midi_drums
BalancingRobot
https://github.com/slbarker/balancingrobot
Swatili 50l Water medidor com controle de válvulas, LCD, botões, RTC e Hall Effect Pulse Reader
https://github.com/daniel-leonard-robinson/swatili
Gerador PWM de hardware Fielduino usando o menu para selecionar frequência e devedores.
https://github.com/neu-rah/fielduino
Arduinomultidesktop Multidesktop Concept para dispositivos de hardware
https://github.com/dontsovcmc/arduinomultidesktop
SmartGreenhouse
https://github.com/dontsovcmc/smartgreenhouse/tree/master/src
Console.UDUino Projeto de console de depuração serial portátil usando ILI9341
https://github.com/malachib/console.arduino
Atmel Avr, Atmel Sam, Espressif 32, Espresso 8266, Intel Arc32, Microchip Pic32, Nordic Nrf51, Nordic Nrf52, ST STM32, Teensy, Ti Msp430
Arduino IDE - Instale usando o gerenciador de bibliotecas (Biblioteca Arduinomenu - Rui Azevedo)
Platformio - http://platformio.org/lib/show/1468/arduinomenu%20library
Serial
https://www.arduino.cc/en/reference/serial
Biblioteca LCD Arduino padrão
https://www.arduino.cc/en/reference/liquidcrystal
F LCDs de Malpartida
https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/home
Matthias Hertel PCF8574 Driver
https://github.com/mathertel/liquidcrystal_pcf8574
Dispositivos TFT Arduino
https://www.arduino.cc/en/guide/tft
SSD1306ascii
https://github.com/greiman/ssd1306ascii
Tft_espi
Uma biblioteca de gráficos e fontes compatíveis com Arduino IDE para ESP8266 e ESP32
https://github.com/bodmer/tft_espi
TFT_HX8357 Driver
https://github.com/bodmer/tft_hx8357
Os dispositivos GFX da 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, UC1608, 240X64, UC1610, 160X104, UC1611, 240X64, UC1611, 240X128, UC1701, 128X64, ST7565, 12X64 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
Dispositivos U8G2 e U8x8
https://github.com/olikraus/U8G2_ARDUINO
SSD1305 128X32_NOME, SSD1305 128X32_NOME, SSD1305 128X64_ADAFURT, SSD1305 128X64_ADAFRUIT, SSD1306 128X64_NOLM, SSD1306 128X64_COMCOMHMOME, SSD1306 128X64_V SSD1306 128X64_NOME, SSD1306 128X64_VCOMH0, SSD1306 128X64_ALT0, SH1106 128X64_NOMAM, SH1106 128X64_VCOMH0, SH1106 128X64, 128x64_vcomh0, sh1106 128x64_winstar, sh1106 72x40_wise, sh1106 72x40_wise, sh1106 64x32, sh1106 64x32, sh1107 64x128, sh1107 61106, 64x32, sh1107 64x128, sh1107 61106, 64x32, se veri. SH1107 128X128, SH1107 128X128, SH1122 256X64, SH1122 256X64, SSD1306 128X32_UNIVISION, SSD1306 128X32_UNIVISION, SSD1306, SSD1306 48X64_WINSTAR, SSD1306 48X64_WINSTAR, SSD1306 64X32_NONAME, SSD1306 64X32_1F, SSD1306 64X32_NONAME, SSD1306 64X32_1F, SSD1306 96X16_ER, SSD1306 96X16_ER, 128X64_NOME2, SSD1309 128X64_NONAME2, SSD1309 128X64_NOME0, SSD1309 128X64_NONAME0, SSD1325 NHD_12864, SSD132525 NHD1325, ER_256X32, SSD1326 ER_256X32, SSD1327 SEED_96X96, SSD1327 SEED_96X96, SSD1327 Midas_128x128, SSD1327 MIDAS_128X128, 60x32, LD7032 60x32, ST7920 192X32, ST7920 192X32, ST7920 192X32, ST7920 128X64, ST7920 128X64, ST7920 128X64, LS013B7DH03 128128, Mini12864, PCD8544 84X48, PCF8812 96X65, HX1230 96X68, UC1604 JLX19264, UC1604 JLX1924, UC108 ERC24064, UC1608080808080808080808080 UC1608 ERC240120, UC1608 240X128, UC1608 240X128, UC1638 160X128, UC1610 EA_DOGXL160, UC1610 EA_DOGXL160, ECO_DOGXL10, EA_DOGXL240, UC1611 EA_DOGXL240, UC1611 EW50850, UC1611 EW50850, ST7565 EA_DOGM128, ST7565 64128N, ST755, ZOLEN_12864, ST7565 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 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, 24 T6963 240X64, T6963 256X64, T6963 128X64, SSD1322 NHD_256X64, SSD1322 NHD_128X64, SSD1606 172X72, SSD1607 200X200, 296X128, 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 ANSI em série
https://github.com/neu-rah/ansistream
Grove RGB LCD I2C 2X16
https://wiki.seeedstudio.com/grove-lcd_rgb_backlight/
Navegador da web
Web JSON
WebSockets
NOTA: O ESP8266 exigirá uma biblioteca de streaming, mesmo que não use a interface da web, junto com #include <menuIO/esp8266Out.h>
Dependendo do seu driver de saída, ele pode ser (pode instalar os dois)
Serial https://www.arduino.cc/en/reference/serial
QuadEncoder - Encoder genérico usando PCINT (construído)
Botões - teclado digital simples (incorporado)
Teclado genérico (sem pcint) - configurável para teclados digitais ou analógicos (construído)
Joystick analógico
ClickEncoder https://github.com/0xpit/encoder
Teclado matricial
http://playground.arduino.cc/code/keypad https://github.com/nullkraft/keypad
PCF8574 Matriz I2C baseada no keypad https://github.com/whatnick/i2ckeypad
API de navegação de chamada de entrada definida pelo usuário API
Navegador da web (experimental) ao usar dispositivos ESP
Esta biblioteca depende das seguintes bibliotecas:
Dependendo do tipo de entrada ou saída, outras bibliotecas podem ser necessárias. Essencialmente, qualquer biblioteca necessária para seus dispositivos.
mais informações em
Páginas Wiki, questões ou R-site.net
Relate erros, problemas ou idéias de aprimoramento, eu apreco o feedback. Obrigado.
No relatório de problemas, especifique os drivers ou dispositivos de entrada e saída, bem como a plataforma de destino.
O codificador agora precisa começar () a ser chamado na configuração (2.x)
A entrada é lida a partir de fluxos genéricos, incluídos fluxos simples para codificadores e teclados - o driver do codificador fornecido usa pull -ups internos e lógica reversa
Múltipla embalagem de fluxo para entrada para misturar o fluxo do codificador com o teclado do codificador (geralmente 1 ou 2 teclas)
Opção InvertFieldKeys removida, a inversão agora é suportada por objetos específicos do menuin.
Regressão: ainda é necessário para facilitar os casos de entrada simples.
NumValueInput movido para o objeto MENUIN
Navroot Options Extra, anteriormente no objeto de opções globais
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 A série não é mais aceita como entrada diretamente, use serialin em vez disso
A função PrintTo Member mudou de:
Used printTo (navRoot&, bool ,menuOut&, idx_t , idx_t );para
Used printTo (navRoot&, bool ,menuOut&, idx_t , idx_t , idx_t = 0 );Isso deve afetar apenas componentes personalizados
As entradas agora são do menu da classe, derivadas do fluxo, mas incluindo funções de sinalização para inversão do eixo de campo por classe de entrada.
Falso = Menu Continuar
true = menu de saída