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 =退出菜單