Arduino框架的通用菜单/交互性系统
完整的自动化或用户代码驱动的导航系统。使用此系统,您可以定义菜单,子菜单,输入字段和其他涉及所有输入/输出的迭代对象,并且可以通过用户迭代而调用用户定义的处理程序。用户函数可以作为单个操作,在单击/输入上或事件驱动的函数响应焦点IN/OUT或ENTER/ESC事件。该系统被设计为非阻止投票系统,允许并发任务运行。可选的系统可以在半自动化模式下操作,从用户代码发出导航命令。
看到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));
}插件是特定的菜单组合或项目自定义行为和/或图纸。
某些插件可能是特定于平台的,也可能需要一些硬件。
一些使用Arduinomenu(当前和旧版本)的应用程序/教程。
你有另一个吗?请让我在吉特(Gitter)或给我发电子邮件。
温度传感器和计时器的Arduino脚本。它允许打开加热器并相应地安排
https://github.com/vikulin/lcd_lat
Project-GlasskilnController电加热窑,用于制作“温暖玻璃”
https://arduinoinfo.mywikis.net/wiki/project-glasskilncontroller
Arduinomenu Demo ttgo t-display很棒的教程。
https://sites.google.com/site/jmaathuis/arduino/lilygo-ttgo-ttgo-t-display-esp32/arduinomenu-demo-demo-ttgo-t-display
MVC接口Arduinomenu教程
https://zaragozamakerspace.com/index.php/courses/mvc-interface/
Arduino自动铜胶带切割器
https://www.thingiverse.com/thing:3557719
重新加载粉末料斗水平量表和警报
https://github.com/nathandarnell/reloading-powder-hopper-level-gauge-and-alarm
Servobox伺服测试仪和显示器
https://github.com/jarkman/servobox
Panobot A Panorama机器人
https://github.com/robertfach/panobot
基于Teensy-Midi-looper微控制器MIDI Performance Sequencer
https://github.com/newdigate/teensy-midi-looper
放大器Concontrol自动化程序,以打开/关闭放大器和肯伍德的频段解码
https://github.com/petrlab/amplifiercontrol
SPNA Arduino单端口网络分析仪(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鼓盒,菜单上的菜单
https://github.com/sobollion/midi_drums
Beallincingrobot
https://github.com/slbarker/balancingrobot
SWATILI 50L水表带阀门控制,LCD,按钮,RTC和Hall效应脉冲阅读器
https://github.com/daniel-leonard-robinson/swatili
Fielduino硬件PWM生成器使用菜单选择频率和DUTTY。
https://github.com/neu-rah/fielduino
硬件设备的arduinomultidesktop多侧ktop概念
https://github.com/dontsovcmc/arduinomultidesktop
SmartGreenhouse
https://github.com/dontsovcmc/smartgreenhouse/tree/master/src
Console.Arduino便携式串行调试控制台使用ILI9341
https://github.com/malachib/console.arduino
ATMEL AVR,ATMEL SAM,ESPRESSIF 32,ESPRESSIF 8266,INTEL ARC32,MICROCHIP PIC32,NORDIC NRF51,NORDIC NRF52,ST STM32,TIENSY,TIENSY,TI MSP430
Arduino IDE-使用图书馆管理器(Arduinomenu Library -Rui Azevedo)安装
Platformio -http://platformio.org/lib/show/1468/arduinomenu%20library
系列
https://www.arduino.cc/en/reference/serial
标准Arduino LCD图书馆
https://www.arduino.cc/en/reference/liquidcrystal
f Malpartida的LCD
https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/home
Matthias Hertel PCF8574驱动程序
https://github.com/mathertel/liquidcrystal_pcf8574
Arduino TFT设备
https://www.arduino.cc/en/guide/tft
SSD13061
https://github.com/greiman/ssd1306ascii
TFT_ESPI
ESP8266和ESP32的Arduino IDE兼容图形和字体库
https://github.com/bodmer/tft_espi
TFT_HX8357驱动程序
https://github.com/bodmer/tft_hx8357
Adafruit的GFX设备
https://github.com/adafruit/adafruit-gfx-library
UTFT设备
http://www.rinkydinklectronics.com/library.php?id=51
U8GLIB设备
https://github.com/olikraus/u8glib_arduino
SSD1306,128x64,SSD1306,128x32,SSD1306,64x48,SSD1309,128X64,SSD1322,256x64,SSD1325,128x64 UC1608,240x64,UC1610,160x104,UC1611,240x64,UC1611,240x128,uc1701,128x64,uc1701,102x64,102x64,sT7565,128x64,128x64,128x64,ST7565,128565,1289999999999999999999999999999999999999999999.9999,9999999999933岁零售店 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
U8G2和U8X8设备
https://github.com/olikraus/u8g2_arduino
SSD1305 128X32_NONAME,SSD1305 128x32_noname,SSD1305 128x64_ADAFRUIT,SSD1305 128X64_ADAFRUIT,SSD1306 128X64_NONAME,SSD1306 128X664_VCOMENNAME SSD1306 128X64_NONAME,SSD1306 128X64_VCOMH0,SSD1306 128X64_ALT0,SH1106 128X64_NONAME,SH1106 128X64_VCOMH0 128X64_VCOMH0, SH1106 128X64_WINSTAR, SH1106 72X40_WISE, SH1106 72X40_WISE, SH1106 64X32, SH1106 64X32, SH1107 64X128, SH1107 64X128, SH1107 SEEED_96X96, SH1107 SEEED_96X96, SH1107 128X128,SH1107 128X128,SH1122 256X64,SH1122 256X64,SSD1306 128X32_UNIVISION,SSD1306 128X32_UNIVISY,SSD1306 64X48_ER,SSD48_ER,SSD1306 6448_448_448_4348_4348_48__ER,SSD66648__ER,SSD.SDSD,,,,,,,,,第136件348_,, 48x64_winstar,SSD1306 48X64_WINSTAR,SSD1306 64X32_NONAME,SSD1306 64x32_1F,SSD1306 64X32_NONANE SSD1309 128X64_NONAME2,SSD1309 128X64_NONAME2,SSD1309 128X64_NONAME0,SSD1309 128x64_noname0,SSD1325 NHD1325 NHD_128X64,SSD13264,SSD1325 NHD_128X64,SSD_128X64,SSD_128X64,SSD_1264,SSD_1264,SSD_1264,SSD_1264,SSD_1264,SSD_1264,SSD_1264,SSD_1264, ER_256X32,SSD1326 ER_256X32,SSD1327 SEEED_96X96,SSD1327 SEEED_96X96,SSD1327 MIDAS_128X128 60x32,LD7032 60x32,ST7920 192x32,ST7920 192X32,ST7920 192X32,ST7920 128X64,ST7920 128X64,ST7920 128X64,128X64 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 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 ENEN_DG128064I,ST7588 JLX12864,ST7588 JLX12864,ST75256 ST75256 JLX256160,ST75256 JLX240160,ST75256 JLX240160,ST75256 JLX25664,ST75256 JLX25664 TG12864R,IST3020 ERC19264,SBN1661 122X32,SED1520 122X32,KS0108 128X64,KS0108 ERM19264,LC7981 160X80 T6963 240x64,T6963 256x64,T6963 128x64,SSD1322 NHD_256X64,SSD1322 NHD_128X64,SSD1606 172X72,SSD1607 20072007200X200X200XD1607200件事296x128,IL3820 V2_296x128,SED1330 240x128,RA8835 NHD_240X128,RA8835 320X240,MAX7219 3219 32X8,A2PRINTER 384X240
UCGLIB设备
https://github.com/olikraus/ucglib_arduino
ST7735,ILI9163,ILI9325,ILI9341,ILI9486,LD50T6160,PCF8833,SEPS225,SSD1331,SSD1331,SSD1351,HX8352C,HX8352C
串行ANSI终端
https://github.com/neu-rah/ansistream
格罗夫RGB LCD I2C 2x16
https://wiki.seeedstudio.com/grove-lcd_rgb_backlight/
Web浏览器
网络JSON
Websocket
注意: ESP8266即使不使用Web界面也需要一个流库,以及#include <menuIO/esp8266Out.h>
根据您的输出驱动程序,它可能是之一(可以同时安装)
序列https://www.arduino.cc/en/reference/serial
Quadencoder-使用PCINT(内置)的通用编码器
按钮 - 简单的数字键盘(内置)
通用键盘(无PCINT) - 可为数字或模拟键盘配置(内置)
模拟操纵杆
ClickEncoder https://github.com/0xpit/encoder
矩阵键盘
http://playground.arduino.cc/code/keypad https://github.com/nullkraft/keypad
PCF8574基于I2C矩阵键盘https://github.com/whatnick/i2ckeypad
用户定义的输入调用菜单导航API
使用ESP设备时网络浏览器(实验)
该库取决于以下库:
根据输入或输出的类型,可能需要其他库。本质上,您的设备所需的任何库。
更多信息
Wiki页面,问题或r-site.net
请报告错误,问题或增强想法,我会提出反馈。谢谢。
关于问题报告,请指定输入和输出驱动程序或设备以及目标平台。
现在需要在设置(2.x)上调用begin()
输入是从通用流中读取的,其中包括用于编码器和键盘的简单流 - 提供的编码器驱动程序使用内部上拉和反向逻辑
多个流动包装以用于输入以将编码器流与编码器键盘混合(通常为1或2个键)
删除了InvertFieldKeys选项,现在由特定的菜单对象支持反转。
回归:仍然需要简化简单的输入案例。
numValueInput移动到菜单对象
navroot额外选项,以前在全球选项对象上
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 =退出菜单