2021-08-29 16:50:01 +08:00
/*
MUIDemo . ino
Universal 8 bit Graphics Library ( https : //github.com/olikraus/u8g2/)
Copyright ( c ) 2016 , olikraus @ gmail . com
All rights reserved .
Redistribution and use in source and binary forms , with or without modification ,
are permitted provided that the following conditions are met :
* Redistributions of source code must retain the above copyright notice , this list
of conditions and the following disclaimer .
* Redistributions in binary form must reproduce the above copyright notice , this
list of conditions and the following disclaimer in the documentation and / or other
materials provided with the distribution .
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS " AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES ,
INCLUDING , BUT NOT LIMITED TO , THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL ,
SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT
NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ;
LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT ,
STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE )
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
# include <Arduino.h>
# include <U8g2lib.h>
2021-08-30 05:00:17 +08:00
# include <MUIU8g2.h>
2021-08-29 16:50:01 +08:00
# ifdef U8X8_HAVE_HW_SPI
# include <SPI.h>
# endif
# ifdef U8X8_HAVE_HW_I2C
# include <Wire.h>
# endif
// Please UNCOMMENT one of the contructor lines below
// U8g2 Contructor List (Picture Loop Page Buffer)
// The complete list is available here: https://github.com/olikraus/u8g2/wiki/u8g2setupcpp
// Please update the pin numbers according to your setup. Use U8X8_PIN_NONE if the reset pin is not connected
//U8G2_NULL u8g2(U8G2_R0); // null device, a 8x8 pixel display which does nothing
//U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 12, /* dc=*/ 4, /* reset=*/ 6); // Arduboy (Production, Kickstarter Edition)
//U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1306_128X64_NONAME_1_3W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* reset=*/ 8);
//U8G2_SSD1306_128X64_NONAME_1_3W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* reset=*/ 8);
//U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SSD1306_128X64_ALT0_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // same as the NONAME variant, but may solve the "every 2nd line skipped" problem
//U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* reset=*/ 8);
//U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // All Boards without Reset of the Display
//U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 16, /* data=*/ 17, /* reset=*/ U8X8_PIN_NONE); // ESP32 Thing, pure SW emulated I2C
//U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ 16, /* data=*/ 17); // ESP32 Thing, HW I2C with pin remapping
//U8G2_SSD1306_128X64_NONAME_1_6800 u8g2(U8G2_R0, 13, 11, 2, 3, 4, 5, 6, A4, /*enable=*/ 7, /*cs=*/ 10, /*dc=*/ 9, /*reset=*/ 8);
//U8G2_SSD1306_128X64_NONAME_1_8080 u8g2(U8G2_R0, 13, 11, 2, 3, 4, 5, 6, A4, /*enable=*/ 7, /*cs=*/ 10, /*dc=*/ 9, /*reset=*/ 8);
//U8G2_SSD1306_128X64_VCOMH0_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // same as the NONAME variant, but maximizes setContrast() range
//U8G2_SSD1306_128X64_ALT0_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // same as the NONAME variant, but may solve the "every 2nd line skipped" problem
2021-09-03 04:00:13 +08:00
//U8G2_SSD1306_102X64_EA_OLEDS102_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // same as the NONAME variant, but may solve the "every 2nd line skipped" problem
2021-08-29 16:50:01 +08:00
//U8G2_SH1106_128X64_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SH1106_128X64_VCOMH0_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // same as the NONAME variant, but maximizes setContrast() range
//U8G2_SH1106_128X64_WINSTAR_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // same as the NONAME variant, but uses updated SH1106 init sequence
//U8G2_SH1106_128X32_VISIONOX_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SH1106_128X32_VISIONOX_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SH1106_72X40_WISE_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SH1107_64X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SH1107_128X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SH1107_128X128_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ 8);
2021-09-27 01:09:29 +08:00
//U8G2_SH1107_128X80_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ 8);
2021-08-29 16:50:01 +08:00
//U8G2_SH1107_PIMORONI_128X128_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ 8);
//U8G2_SH1107_SEEED_128X128_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SH1107_SEEED_128X128_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SH1107_SEEED_96X96_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SH1108_160X160_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SH1122_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Enable U8G2_16BIT in u8g2.h
//U8G2_SSD1306_128X32_UNIVISION_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 21, /* data=*/ 20, /* reset=*/ U8X8_PIN_NONE); // Adafruit Feather M0 Basic Proto + FeatherWing OLED
//U8G2_SSD1306_128X32_UNIVISION_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // Adafruit Feather ESP8266/32u4 Boards + FeatherWing OLED
//U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // Adafruit ESP8266/32u4/ARM Boards + FeatherWing OLED
//U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ SCL, /* data=*/ SDA); // pin remapping with ESP8266 HW I2C
//U8G2_SSD1306_128X32_WINSTAR_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ SCL, /* data=*/ SDA); // pin remapping with ESP8266 HW I2C
//U8G2_SSD1306_64X48_ER_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // EastRising 0.66" OLED breakout board, Uno: A4=SDA, A5=SCL, 5V powered
//U8G2_SSD1306_48X64_WINSTAR_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SSD1306_64X32_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SSD1306_64X32_1F_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SSD1306_96X16_ER_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // EastRising 0.69" OLED
//U8G2_SSD1306_72X40_ER_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // EastRising 0.42" OLED
//U8G2_SSD1322_NHD_256X64_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Enable U8G2_16BIT in u8g2.h
//U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Enable U8G2_16BIT in u8g2.h
//U8G2_SSD1322_NHD_128X64_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1322_NHD_128X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1325_NHD_128X64_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1325_NHD_128X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD0323_OS128064_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD0323_OS128064_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1326_ER_256X32_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // experimental driver for ER-OLED018-1
//U8G2_SSD1327_SEEED_96X96_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // Seeedstudio Grove OLED 96x96
//U8G2_SSD1327_SEEED_96X96_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // Seeedstudio Grove OLED 96x96
//U8G2_SSD1327_EA_W128128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1327_EA_W128128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1327_EA_W128128_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 5, /* data=*/ 4, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SSD1327_EA_W128128_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); /* Uno: A4=SDA, A5=SCL, add "u8g2.setBusClock(400000);" into setup() for speedup if possible */
//U8G2_SSD1327_MIDAS_128X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1327_MIDAS_128X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1327_MIDAS_128X128_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); /* Uno: A4=SDA, A5=SCL, add "u8g2.setBusClock(400000);" into setup() for speedup if possible */
//U8G2_SSD1327_WS_128X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1327_WS_128X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1327_VISIONOX_128X96_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1327_VISIONOX_128X96_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1329_128X96_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1329_128X96_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1329_96X96_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1329_96X96_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1329_96X96_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ A4, /* dc=*/ A2, /* reset=*/ U8X8_PIN_NONE); // Adafruit Feather 32u4 Basic Proto
//U8G2_SSD1305_128X32_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1305_128X32_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1305_128X32_ADAFRUIT_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1305_128X32_ADAFRUIT_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1305_128X64_ADAFRUIT_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1305_128X64_ADAFRUIT_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1305_128X64_RAYSTAR_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1305_128X64_RAYSTAR_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1309_128X64_NONAME0_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1309_128X64_NONAME0_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1309_128X64_NONAME2_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1309_128X64_NONAME2_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1316_128X32_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1316_128X32_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1317_96X96_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // not tested, not confirmed
//U8G2_SSD1317_96X96_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // not tested, not confirmed
//U8G2_SSD1318_128X96_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1318_128X96_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1320_160X132_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_SSD1320_160X132_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_LD7032_60X32_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 11, /* data=*/ 12, /* cs=*/ 9, /* dc=*/ 10, /* reset=*/ 8); // SW SPI Nano Board
//U8G2_LD7032_60X32_1_4W_SW_I2C u8g2(U8G2_R0, /* clock=*/ 11, /* data=*/ 12, /* reset=*/ U8X8_PIN_NONE); // NOT TESTED!
//U8G2_LD7032_60X32_ALT_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 11, /* data=*/ 12, /* cs=*/ 9, /* dc=*/ 10, /* reset=*/ 8); // SW SPI Nano Board
//U8G2_LD7032_60X32_ALT_1_4W_SW_I2C u8g2(U8G2_R0, /* clock=*/ 11, /* data=*/ 12, /* reset=*/ U8X8_PIN_NONE); // NOT TESTED!
//U8G2_UC1701_EA_DOGS102_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
2021-09-27 01:09:29 +08:00
//U8G2_UC1701_EA_DOGS102_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
2021-08-29 16:50:01 +08:00
//U8G2_PCD8544_84X48_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Nokia 5110 Display
//U8G2_PCD8544_84X48_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Nokia 5110 Display
//U8G2_PCF8812_96X65_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Could be also PCF8814
//U8G2_PCF8812_96X65_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Could be also PCF8814
//U8G2_HX1230_96X68_1_3W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* reset=*/ 8);
//U8G2_HX1230_96X68_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_KS0108_128X64_1 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*dc=*/ 17, /*cs0=*/ 14, /*cs1=*/ 15, /*cs2=*/ U8X8_PIN_NONE, /* reset=*/ U8X8_PIN_NONE); // Set R/W to low!
//U8G2_KS0108_ERM19264_1 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*dc=*/ 17, /*cs0=*/ 14, /*cs1=*/ 15, /*cs2=*/ 16, /* reset=*/ U8X8_PIN_NONE); // Set R/W to low!
//U8G2_HD44102_100X64_1 u8g2(U8G2_R0, 4, 5, 6, 7, 8, 9, 10, 11, /*enable=*/ 2, /*dc=*/ 3, /*cs0=*/ A0, /*cs1=*/ A1, /*cs2=*/ A2, /* reset=*/ U8X8_PIN_NONE); // Set R/W to low!
//U8G2_T7932_150X32_1 u8g2(U8G2_R0, 4, 5, 6, 7, 8, 9, 10, 11, /*enable=*/ 2, /*dc=*/ 3, /*cs0=*/ A0, /*cs1=*/ A1, /*cs2=*/ A2, /* reset=*/ U8X8_PIN_NONE); // Set R/W to low!
2021-09-28 05:23:02 +08:00
//U8G2_ST7920_256X32_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*cs=*/ U8X8_PIN_NONE, /*dc=*/ 17, /*reset=*/ U8X8_PIN_NONE);
//U8G2_ST7920_256X32_1_SW_SPI u8g2(U8G2_R0, /* clock=*/ 18 /* A4 */ , /* data=*/ 16 /* A2 */, /* CS=*/ 17 /* A3 */, /* reset=*/ U8X8_PIN_NONE);
2021-08-29 16:50:01 +08:00
//U8G2_ST7920_192X32_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*cs=*/ U8X8_PIN_NONE, /*dc=*/ 17, /*reset=*/ U8X8_PIN_NONE);
//U8G2_ST7920_192X32_1_SW_SPI u8g2(U8G2_R0, /* clock=*/ 18 /* A4 */ , /* data=*/ 16 /* A2 */, /* CS=*/ 17 /* A3 */, /* reset=*/ U8X8_PIN_NONE);
//U8G2_ST7920_128X64_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18 /* A4 */, /*cs=*/ U8X8_PIN_NONE, /*dc/rs=*/ 17 /* A3 */, /*reset=*/ 15 /* A1 */); // Remember to set R/W to 0
//U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, /* clock=*/ 18 /* A4 */ , /* data=*/ 16 /* A2 */, /* CS=*/ 17 /* A3 */, /* reset=*/ U8X8_PIN_NONE);
//U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* CS=*/ 10, /* reset=*/ 8);
//U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, /* clock=*/ 14, /* data=*/ 13, /* CS=*/ 15, /* reset=*/ 16); // Feather HUZZAH ESP8266, E=clock=14, RW=data=13, RS=CS
//U8G2_ST7920_128X64_1_HW_SPI u8g2(U8G2_R0, /* CS=*/ 10, /* reset=*/ 8);
//U8G2_ST7920_128X64_1_HW_SPI u8g2(U8G2_R0, /* CS=*/ 15, /* reset=*/ 16); // Feather HUZZAH ESP8266, E=clock=14, RW=data=13, RS=CS
//U8G2_ST7528_ERC16064_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7528_ERC16064_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_EA_DOGM128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_EA_DOGM128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_64128N_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_64128N_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_EA_DOGM132_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ U8X8_PIN_NONE); // DOGM132 Shield
//U8G2_ST7565_EA_DOGM132_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ U8X8_PIN_NONE); // DOGM132 Shield
//U8G2_ST7565_ZOLEN_128X64_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_ZOLEN_128X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_LM6059_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Adafruit ST7565 GLCD
//U8G2_ST7565_LM6059_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Adafruit ST7565 GLCD
//U8G2_ST7565_KS0713_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // KS0713 controller
//U8G2_ST7565_KS0713_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // KS0713 controller
//U8G2_ST7565_LX12864_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_LX12864_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_ERC12864_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_ERC12864_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_ERC12864_ALT_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // contrast improved version for ERC12864
//U8G2_ST7565_ERC12864_ALT_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // contrast improved version for ERC12864
//U8G2_ST7565_NHD_C12832_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_NHD_C12832_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_NHD_C12864_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_NHD_C12864_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_JLX12864_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7565_JLX12864_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7567_PI_132X64_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 7, /* dc=*/ 9, /* reset=*/ 8); // Pax Instruments Shield, LCD_BL=6
//U8G2_ST7567_PI_132X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 7, /* dc=*/ 9, /* reset=*/ 8); // Pax Instruments Shield, LCD_BL=6
//U8G2_ST7567_JLX12864_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 7, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7567_JLX12864_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 7, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7567_OS12864_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 7, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7567_OS12864_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 7, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7567_ENH_DG128064_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7567_ENH_DG128064_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7567_ENH_DG128064I_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7567_ENH_DG128064I_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7567_64X32_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_ST7567_HEM6432_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_ST7571_128X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7571_128X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
2021-09-02 20:41:59 +08:00
//U8G2_ST7571_128X96_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7571_128X96_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
2021-08-29 16:50:01 +08:00
//U8G2_ST7586S_ERC240160_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7586S_YMC240160_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
2021-10-21 04:10:57 +08:00
//U8G2_ST75160_JM16096_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST75160_JM16096_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
2021-08-29 16:50:01 +08:00
//U8G2_ST75256_JLX172104_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST75256_JLX172104_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST75256_JLX19296_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST75256_JLX19296_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST75256_JLX256128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_JLX256128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_WO256X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_WO256X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_JLX256128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 9, /* data=*/ 8, /* cs=*/ 7, /* dc=*/ 6, /* reset=*/ 5); // MKR Zero, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_JLX256128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 7, /* dc=*/ 6, /* reset=*/ 5); // MKR Zero, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_JLX256160_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_JLX256160_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_JLX256160M_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_JLX256160M_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_JLX256160_ALT_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_JLX256160_ALT_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_ST75256_JLX240160_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST75256_JLX240160_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST75256_JLX25664_1_2ND_HW_I2C u8g2(U8G2_R0, /* reset=*/ 8); // Due, 2nd I2C, enable U8g2 16 bit mode for this display
//U8G2_ST75320_JLX320240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_ST75320_JLX320240_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Uno, Enable U8g2 16 bit mode for this display
//U8G2_NT7534_TG12864R_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_NT7534_TG12864R_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_ST7588_JLX12864_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ 5);
//U8G2_ST7588_JLX12864_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ 5);
//U8G2_IST3020_ERC19264_1_6800 u8g2(U8G2_R0, 44, 43, 42, 41, 40, 39, 38, 37, /*enable=*/ 28, /*cs=*/ 32, /*dc=*/ 30, /*reset=*/ 31); // Connect WR pin with GND
//U8G2_IST3020_ERC19264_1_8080 u8g2(U8G2_R0, 44, 43, 42, 41, 40, 39, 38, 37, /*enable=*/ 29, /*cs=*/ 32, /*dc=*/ 30, /*reset=*/ 31); // Connect RD pin with 3.3V
//U8G2_IST3020_ERC19264_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_IST7920_128X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Round display
//U8G2_IST7920_128X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Round display
//U8G2_LC7981_160X80_1_6800 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect RW with GND
//U8G2_LC7981_160X160_1_6800 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect RW with GND
//U8G2_LC7981_240X128_1_6800 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect RW with GND
//U8G2_LC7981_240X64_1_6800 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect RW with GND
//U8G2_SED1520_122X32_1 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*dc=*/ A0, /*e1=*/ A3, /*e2=*/ A2, /* reset=*/ A4); // Set R/W to low!
//U8G2_T6963_240X128_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable/wr=*/ 17, /*cs/ce=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect RD with +5V, FS0 and FS1 with GND
//U8G2_T6963_256X64_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable/wr=*/ 17, /*cs/ce=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect RD with +5V, FS0 and FS1 with GND
//U8G2_T6963_160X80_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable/wr=*/ 17, /*cs/ce=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect RD with +5V, FS0 and FS1 with GND
//U8G2_T6963_128X64_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable/wr=*/ 17, /*cs/ce=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect RD with +5V, FS0 and FS1 with GND
//U8G2_T6963_128X64_ALT_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable/wr=*/ 17, /*cs/ce=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect RD with +5V, FS0 and FS1 with GND
//U8G2_SED1330_240X128_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 17, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect /RD = E with +5V, enable is /WR = RW, FG with GND, 14=Uno Pin A0
//U8G2_SED1330_240X128_1_6800 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 17, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // A0 is dc pin, /WR = RW = GND, enable is /RD = E
//U8G2_RA8835_NHD_240X128_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 17, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect /RD = E with +5V, enable is /WR = RW, FG with GND, 14=Uno Pin A0
//U8G2_RA8835_NHD_240X128_1_6800 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 17, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // A0 is dc pin, /WR = RW = GND, enable is /RD = E
//U8G2_UC1601_128X32_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_UC1601_128X32_1_3W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* reset=*/ 8);
//U8G2_UC1601_128X64_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_UC1604_JLX19264_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_UC1604_JLX19264_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
2021-10-03 23:27:06 +08:00
//U8G2_UC1609_SLG19264_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_UC1609_SLG19264_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
2021-08-29 16:50:01 +08:00
//U8G2_UC1608_ERC24064_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due ERC24064-1 Test Setup
//U8G2_UC1608_DEM240064_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due ERC24064-1 Test Setup
//U8G2_UC1608_ERC240120_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_UC1608_240X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due ERC24064-1 Test Setup
//U8G2_UC1610_EA_DOGXL160_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ U8X8_PIN_NONE);
//U8G2_UC1610_EA_DOGXL160_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ U8X8_PIN_NONE);
//U8G2_UC1611_EA_DOGM240_1_2ND_HW_I2C u8g2(U8G2_R0, /* reset=*/ 8); // Due, 2nd I2C, DOGM240 Test Board
//U8G2_UC1611_EA_DOGM240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board
//U8G2_UC1611_EA_DOGXL240_1_2ND_HW_I2C u8g2(U8G2_R0, /* reset=*/ 8); // Due, 2nd I2C, DOGXL240 Test Board
//U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board
//U8G2_UC1611_EW50850_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*cs=*/ 3, /*dc=*/ 16, /*reset=*/ 17); // 240x160, Connect RD/WR1 pin with 3.3V, CS is aktive high
//U8G2_UC1611_CG160160_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*cs=*/ 3, /*dc=*/ 16, /*reset=*/ 17); // Connect WR1 and CD1 pin with 3.3V, connect CS0 with cs, WR0 with enable, CD with dc
//U8G2_UC1611_IDS4073_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Enable U8g2 16Bit Mode
//U8G2_UC1611_IDS4073_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Enable U8g2 16Bit Mode
//U8G2_UC1617_JLX128128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_UC1617_JLX128128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_UC1638_192X96_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_UC1638_192X96_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_UC1638_192X96_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* reset=*/ 8); // u8g2 test board: I2C clock/data is same as SPI, I2C default address is 0x78
//U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display
//U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display, original LUT from embedded artists
//U8G2_SSD1607_GD_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Good Display
//U8G2_SSD1607_WS_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Waveshare
//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display, enable 16 bit mode for this display!
//U8G2_IL3820_V2_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // ePaper Display, lesser flickering and faster speed, enable 16 bit mode for this display!
//U8G2_LS013B7DH03_128X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ U8X8_PIN_NONE, /* reset=*/ 8); // there is no DC line for this display
//U8G2_LS027B7DH01_400X240_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ U8X8_PIN_NONE, /* reset=*/ 8); // there is no DC line for this display, SPI Mode 2
//U8G2_LS027B7DH01_M0_400X240_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ U8X8_PIN_NONE, /* reset=*/ 8); // there is no DC line for this display, SPI Mode 0
//U8G2_LS013B7DH05_144X168_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ U8X8_PIN_NONE, /* reset=*/ 8); // there is no DC line for this display
//U8G2_ST7511_AVD_320X240_1_8080 u8g2(U8G2_R0, 13, 11, 2, 3, 4, 5, 6, A4, /*enable/WR=*/ 7, /*cs=*/ 10, /*dc=*/ 9, /*reset=*/ 8); // Enable U8g2 16Bit Mode and connect RD pin with 3.3V/5V
//U8G2_S1D15721_240X64_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_S1D15721_240X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
2021-10-03 17:48:36 +08:00
//U8G2_GU800_128X64_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
//U8G2_GU800_128X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
2021-08-29 16:50:01 +08:00
// End of constructor list
2021-08-30 05:00:17 +08:00
MUIU8G2 mui ;
2021-08-29 16:50:01 +08:00
/*
global variables which form the communication gateway between the user interface and the rest of the code
*/
uint8_t number_input = 2 ; // variable where the user can input a number between 0 and 9
2021-09-07 05:51:26 +08:00
uint8_t number_input2 = 100 ; // variable where the user can input a number between 0 and 9
2021-08-29 16:50:01 +08:00
uint8_t fruit_input = 2 ;
2021-09-07 05:51:26 +08:00
uint8_t fruit_input2 = 2 ;
2021-08-29 16:50:01 +08:00
uint8_t my_value3 = 0 ;
uint8_t color_input = 0 ;
2021-09-26 04:59:59 +08:00
uint8_t food_input = 0 ;
2021-08-29 16:50:01 +08:00
uint8_t checkbox_input = 0 ;
uint8_t direction_input = 0 ;
2021-09-13 05:43:19 +08:00
uint8_t text_input [ 4 ] = { ' ' , ' ' , ' ' , ' ' } ;
2021-09-07 05:51:26 +08:00
uint8_t exit_code = 0 ;
2021-09-13 05:43:19 +08:00
uint16_t list_selection = 0 ;
uint16_t list_selection2 = 0 ;
uint16_t list_selection3 = 0 ;
2021-09-26 04:59:59 +08:00
uint16_t list_selection4 = 0 ;
2021-09-13 05:43:19 +08:00
uint8_t array_pos = 0 ;
uint8_t array_led_off_time [ 4 ] = { 10 , 5 , 3 , 1 } ;
uint8_t led_off_time = 0 ;
uint8_t array_led_on_time [ 4 ] = { 10 , 5 , 3 , 1 } ;
uint8_t led_on_time = 0 ;
uint8_t muif_array_pos_selection ( mui_t * ui , uint8_t msg )
{
uint8_t return_value = 0 ;
switch ( msg )
{
case MUIF_MSG_FORM_START :
led_off_time = array_led_off_time [ array_pos ] ;
led_on_time = array_led_on_time [ array_pos ] ;
return_value = mui_u8g2_u8_min_max_wm_mse_pi ( ui , msg ) ;
break ;
case MUIF_MSG_FORM_END :
return_value = mui_u8g2_u8_min_max_wm_mse_pi ( ui , msg ) ;
break ;
case MUIF_MSG_CURSOR_SELECT :
case MUIF_MSG_EVENT_NEXT :
case MUIF_MSG_EVENT_PREV :
array_led_off_time [ array_pos ] = led_off_time ;
array_led_on_time [ array_pos ] = led_on_time ;
return_value = mui_u8g2_u8_min_max_wm_mse_pi ( ui , msg ) ;
led_off_time = array_led_off_time [ array_pos ] ;
led_on_time = array_led_on_time [ array_pos ] ;
break ;
default :
return_value = mui_u8g2_u8_min_max_wm_mse_pi ( ui , msg ) ;
}
return return_value ;
}
uint16_t list_get_cnt ( void * data )
{
return 17 ; /* number of animals */
}
const char * list_get_str ( void * data , uint16_t index )
{
static const char * animals [ ] = { " Bird " , " Bison " , " Cat " , " Crow " , " Dog " , " Elephant " , " Fish " , " Gnu " , " Horse " , " Koala " , " Lion " , " Mouse " , " Owl " , " Rabbit " , " Spider " , " Turtle " , " Zebra " } ;
return animals [ index ] ;
}
2021-08-29 16:50:01 +08:00
2021-09-26 04:59:59 +08:00
uint16_t menu_get_cnt ( void * data )
{
return 10 ; /* number of menu entries */
}
const char * menu_get_str ( void * data , uint16_t index )
{
static const char * menu [ ] =
{
MUI_0 " Goto Main Menu " ,
MUI_10 " Enter a number " ,
MUI_11 " Parent/Child Selection " ,
MUI_13 " Checkbox " ,
MUI_14 " Radio Selection " ,
MUI_15 " Text Input " ,
MUI_16 " Single Line Selection " ,
MUI_17 " List Line Selection " ,
MUI_18 " Parent/Child List " ,
MUI_20 " Array Edit " ,
} ;
return menu [ index ] ;
}
2021-09-07 05:51:26 +08:00
uint8_t mui_style_helv_r_08 ( mui_t * ui , uint8_t msg )
2021-08-29 16:50:01 +08:00
{
u8g2_t * u8g2 = mui_get_U8g2 ( ui ) ;
switch ( msg )
{
case MUIF_MSG_DRAW :
u8g2_SetFont ( u8g2 , u8g2_font_helvR08_tr ) ;
break ;
}
return 0 ;
}
2021-09-07 05:51:26 +08:00
uint8_t mui_style_helv_b_08 ( mui_t * ui , uint8_t msg )
2021-08-29 16:50:01 +08:00
{
u8g2_t * u8g2 = mui_get_U8g2 ( ui ) ;
switch ( msg )
{
case MUIF_MSG_DRAW :
u8g2_SetFont ( u8g2 , u8g2_font_helvB08_tr ) ;
break ;
}
return 0 ;
}
2021-09-07 05:51:26 +08:00
uint8_t mui_style_monospaced ( mui_t * ui , uint8_t msg )
{
u8g2_t * u8g2 = mui_get_U8g2 ( ui ) ;
switch ( msg )
{
case MUIF_MSG_DRAW :
u8g2_SetFont ( u8g2 , u8g2_font_profont12_tr ) ;
//u8g2_SetFont(u8g2, u8g2_font_6x10_tr);
break ;
}
return 0 ;
}
2021-09-26 04:59:59 +08:00
uint8_t mui_style_streamline_food_drink ( mui_t * ui , uint8_t msg )
{
u8g2_t * u8g2 = mui_get_U8g2 ( ui ) ;
switch ( msg )
{
case MUIF_MSG_DRAW :
u8g2_SetFont ( u8g2 , u8g2_font_streamline_food_drink_t ) ;
//u8g2_SetFont(u8g2, u8g2_font_6x10_tr);
break ;
}
return 0 ;
}
2021-09-07 05:51:26 +08:00
uint8_t mui_hrule ( mui_t * ui , uint8_t msg )
2021-08-29 16:50:01 +08:00
{
u8g2_t * u8g2 = mui_get_U8g2 ( ui ) ;
switch ( msg )
{
case MUIF_MSG_DRAW :
u8g2_DrawHLine ( u8g2 , 0 , mui_get_y ( ui ) , u8g2_GetDisplayWidth ( u8g2 ) ) ;
break ;
}
return 0 ;
}
/*
User interface fields list . Each entry is defined with the MUIF macro MUIF ( id , cflags , data , cb )
Arguments are :
id :
A string with exactly two characters . This is the unique " id " of the field , which is later used in the form definition string ( fds )
There are some special id ' s : " .L " for text labels and " .G " for a goto form command .
cflags :
Flags , which define static ( constant ) properties of the field . Currently this is either 0 or MUIF_CFLAG_IS_CURSOR_SELECTABLE which marks the field as editable .
data :
A pointer to a local variable , where the result of an editiable field is stored . Currently this is a pointer to uint8_t in most cases .
It depends in the callback function ( cb ) whether this is used or what kind of data is stored
cb :
A callback function .
The callback function will receive messages and have to react accordingly to the message . Some predefined callback functions are avilable in mui_u8g2 . c
*/
2021-09-11 22:10:24 +08:00
2021-09-11 16:27:40 +08:00
muif_t muif_list [ ] = {
2021-08-29 16:50:01 +08:00
/* normal text style */
2021-09-11 23:51:49 +08:00
MUIF_STYLE ( 0 , mui_style_helv_r_08 ) ,
2021-08-29 16:50:01 +08:00
/* bold text style */
2021-09-11 23:51:49 +08:00
MUIF_STYLE ( 1 , mui_style_helv_b_08 ) ,
2021-08-29 16:50:01 +08:00
2021-09-07 05:51:26 +08:00
/* monospaced font */
2021-09-11 23:51:49 +08:00
MUIF_STYLE ( 2 , mui_style_monospaced ) ,
2021-09-12 04:19:37 +08:00
2021-09-26 04:59:59 +08:00
/* food and drink */
MUIF_STYLE ( 3 , mui_style_streamline_food_drink ) ,
2021-08-29 16:50:01 +08:00
/* horizontal line (hrule) */
2021-09-12 04:19:37 +08:00
MUIF_RO ( " HR " , mui_hrule ) ,
2021-08-29 16:50:01 +08:00
/* Goto Form Button where the width is equal to the size of the text, spaces can be used to extend the size */
2021-09-26 04:59:59 +08:00
//MUIF("G1",MUIF_CFLAG_IS_CURSOR_SELECTABLE,0,mui_u8g2_btn_goto_wm_fi),
MUIF_BUTTON ( " G1 " , mui_u8g2_btn_goto_wm_fi ) ,
2021-08-29 16:50:01 +08:00
/* input for a number between 0 to 9 */
2021-09-12 04:19:37 +08:00
//MUIF("IN",MUIF_CFLAG_IS_CURSOR_SELECTABLE,&number_input,mui_u8g2_u8_value_0_9_wm_mse_pi),
//MUIF("IN",MUIF_CFLAG_IS_CURSOR_SELECTABLE, (void *)((mui_u8g2_u8_min_max_t [] ) {{ &number_input COMMA 1 COMMA 8 } } ) , mui_u8g2_u8_min_max_wm_mse_pi),
2021-09-13 05:43:19 +08:00
MUIF_U8G2_U8_MIN_MAX ( " IN " , & number_input , 0 , 9 , mui_u8g2_u8_min_max_wm_mse_pi ) ,
2021-09-07 05:51:26 +08:00
/* input for a number between 0 to 100 */
2021-09-12 04:19:37 +08:00
//MUIF("IH",MUIF_CFLAG_IS_CURSOR_SELECTABLE,&number_input2,mui_u8g2_u8_value_0_100_wm_mud_pi),
2021-09-13 05:43:19 +08:00
MUIF_U8G2_U8_MIN_MAX ( " IH " , & number_input2 , 0 , 100 , mui_u8g2_u8_min_max_wm_mud_pi ) ,
2021-09-07 05:51:26 +08:00
/* input for text with four chars */
2021-09-12 04:19:37 +08:00
/*
2021-09-07 05:51:26 +08:00
MUIF ( " T0 " , MUIF_CFLAG_IS_CURSOR_SELECTABLE , text_input + 0 , mui_u8g2_u8_char_wm_mud_pi ) ,
MUIF ( " T1 " , MUIF_CFLAG_IS_CURSOR_SELECTABLE , text_input + 1 , mui_u8g2_u8_char_wm_mud_pi ) ,
MUIF ( " T2 " , MUIF_CFLAG_IS_CURSOR_SELECTABLE , text_input + 2 , mui_u8g2_u8_char_wm_mud_pi ) ,
MUIF ( " T3 " , MUIF_CFLAG_IS_CURSOR_SELECTABLE , text_input + 3 , mui_u8g2_u8_char_wm_mud_pi ) ,
2021-09-12 04:19:37 +08:00
*/
MUIF_VARIABLE ( " T0 " , text_input + 0 , mui_u8g2_u8_char_wm_mud_pi ) ,
MUIF_VARIABLE ( " T1 " , text_input + 1 , mui_u8g2_u8_char_wm_mud_pi ) ,
MUIF_VARIABLE ( " T2 " , text_input + 2 , mui_u8g2_u8_char_wm_mud_pi ) ,
MUIF_VARIABLE ( " T3 " , text_input + 3 , mui_u8g2_u8_char_wm_mud_pi ) ,
2021-08-29 16:50:01 +08:00
/* input for a fruit (0..3), implements a selection, where the user can cycle through the options */
2021-09-12 04:19:37 +08:00
MUIF_VARIABLE ( " IF " , & fruit_input , mui_u8g2_u8_opt_line_wa_mse_pi ) ,
MUIF_VARIABLE ( " IG " , & fruit_input2 , mui_u8g2_u8_opt_line_wa_mud_pi ) ,
2021-08-29 16:50:01 +08:00
2021-09-12 04:19:37 +08:00
/* checkbox */
//MUIF("CB",MUIF_CFLAG_IS_CURSOR_SELECTABLE,&checkbox_input,mui_u8g2_u8_chkbox_wm_pi),
MUIF_VARIABLE ( " CB " , & checkbox_input , mui_u8g2_u8_chkbox_wm_pi ) ,
2021-08-29 16:50:01 +08:00
/* the following two fields belong together and implement a single selection combo box to select a color */
2021-09-12 04:19:37 +08:00
//MUIF("IC",MUIF_CFLAG_IS_CURSOR_SELECTABLE,&color_input,mui_u8g2_u8_opt_parent_wa_mse_pi),
2021-09-13 05:43:19 +08:00
MUIF_VARIABLE ( " IC " , & color_input , mui_u8g2_u8_opt_parent_wm_mse_pi ) ,
2021-09-12 04:19:37 +08:00
//MUIF("OC",MUIF_CFLAG_IS_CURSOR_SELECTABLE,&color_input,mui_u8g2_u8_opt_child_w1_mse_pi),
2021-09-26 04:59:59 +08:00
//MUIF("OC",MUIF_CFLAG_IS_CURSOR_SELECTABLE,&color_input,mui_u8g2_u8_opt_child_w1_mse_pi),
//MUIF("OC",MUIF_CFLAG_IS_CURSOR_SELECTABLE,&color_input,mui_u8g2_u8_opt_child_w1_mse_pi),
//MUIF("OC",MUIF_CFLAG_IS_CURSOR_SELECTABLE,&color_input,mui_u8g2_u8_opt_child_w1_mse_pi),
MUIF_VARIABLE ( " OC " , & color_input , mui_u8g2_u8_opt_radio_child_w1_mse_pi ) ,
MUIF_VARIABLE ( " ID " , & food_input , mui_u8g2_u8_opt_parent_wm_mse_pi ) ,
MUIF_VARIABLE ( " OD " , & food_input , mui_u8g2_u8_opt_child_wm_mse_pi ) ,
2021-08-29 16:50:01 +08:00
/* radio button style */
2021-09-12 04:19:37 +08:00
//MUIF("RS",MUIF_CFLAG_IS_CURSOR_SELECTABLE,&direction_input,mui_u8g2_u8_radio_wm_pi),
MUIF_VARIABLE ( " RS " , & direction_input , mui_u8g2_u8_radio_wm_pi ) ,
2021-09-13 05:43:19 +08:00
MUIF_U8G2_U16_LIST ( " L1 " , & list_selection , NULL , list_get_str , list_get_cnt , mui_u8g2_u16_list_line_wa_mse_pi ) ,
MUIF_U8G2_U16_LIST ( " L2 " , & list_selection2 , NULL , list_get_str , list_get_cnt , mui_u8g2_u16_list_line_wa_mud_pi ) ,
MUIF_U8G2_U16_LIST ( " LP " , & list_selection3 , NULL , list_get_str , list_get_cnt , mui_u8g2_u16_list_parent_wm_mse_pi ) ,
MUIF_U8G2_U16_LIST ( " LC " , & list_selection3 , NULL , list_get_str , list_get_cnt , mui_u8g2_u16_list_child_w1_mse_pi ) ,
2021-09-26 04:59:59 +08:00
MUIF_U8G2_U16_LIST ( " LG " , & list_selection4 , NULL , menu_get_str , menu_get_cnt , mui_u8g2_u16_list_goto_w1_mse_pi ) ,
2021-08-29 16:50:01 +08:00
2021-09-12 04:19:37 +08:00
/* MUI_GOTO uses the fixed ".G" id and is intended for goto buttons. This is a full display width style button */
2021-09-26 04:59:59 +08:00
MUIF_GOTO ( mui_u8g2_btn_goto_w1_pi ) ,
2021-08-29 16:50:01 +08:00
/* MUI_LABEL uses the fixed ".L" id and is used to place read only text on a form */
2021-09-12 04:19:37 +08:00
//MUIF(".L",0,0,mui_u8g2_draw_text),
MUIF_LABEL ( mui_u8g2_draw_text ) ,
2021-09-07 05:51:26 +08:00
2021-09-13 05:43:19 +08:00
/* array example */
MUIF_U8G2_U8_MIN_MAX ( " AP " , & array_pos , 0 , 3 , muif_array_pos_selection ) ,
MUIF_U8G2_U8_MIN_MAX ( " AF " , & led_off_time , 0 , 20 , mui_u8g2_u8_min_max_wm_mse_pi ) ,
MUIF_U8G2_U8_MIN_MAX ( " AN " , & led_on_time , 0 , 20 , mui_u8g2_u8_min_max_wm_mse_pi ) ,
2021-08-29 16:50:01 +08:00
} ;
/*
The form definition string ( fds ) defines all forms and the fields on those forms .
A new form always starts with MUI_FORM ( u ) . The form ends with the next MUI_FORM ( ) or the end of the fds .
Inside the form use fields or the style command ( MUI_STYLE )
The fields are define with
MUI_XY ( id , x , y ) Field ' id ' without extra argument or text placed at the specified xy position
MUI_XYT ( id , x , y , text ) Field ' id ' with the specified test at position xy
MUI_XYA ( id , x , y , a ) Field ' id ' with argument ' a ' at position xy
MUI_XYAT ( id , x , y , a , text ) Field ' id ' with argument and text placed at position xy
MUI_LABEL ( x , y , text ) Field ' . L ' ( usually some readonly text ) placed at position xy
MUI_GOTO ( x , y , n , text ) Field ' . G ' , usually a button placed at xy , which activates form n
Note :
MUI_LABEL ( x , y , text ) is the same as MUI_XYT ( " .L " , x , y , text )
MUI_GOTO ( x , y , text ) is the same as MUI_XYAT ( " .G " , x , y , n , text )
*/
2021-09-13 05:43:19 +08:00
fds_t fds_data [ ] =
2021-09-11 16:27:40 +08:00
2021-09-26 04:59:59 +08:00
2021-08-29 16:50:01 +08:00
/* top level main menu */
2021-09-07 05:51:26 +08:00
MUI_FORM ( 0 )
2021-08-29 16:50:01 +08:00
MUI_STYLE ( 1 )
2021-09-13 05:43:19 +08:00
MUI_LABEL ( 5 , 10 , " Main Menu 1/3 " )
2021-08-29 16:50:01 +08:00
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_GOTO ( 5 , 25 , 10 , " Enter a number " )
2021-09-11 16:27:40 +08:00
MUI_GOTO ( 5 , 37 , 11 , " Parent/Child Selection " )
MUI_GOTO ( 5 , 49 , 13 , " Checkbox " )
MUI_GOTO ( 5 , 61 , 1 , " More... " )
2021-09-07 05:51:26 +08:00
MUI_FORM ( 1 )
MUI_STYLE ( 1 )
2021-09-13 05:43:19 +08:00
MUI_LABEL ( 5 , 10 , " Main Menu 2/3 " )
2021-09-07 05:51:26 +08:00
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_GOTO ( 5 , 25 , 14 , " Radio Selection " )
2021-09-11 16:27:40 +08:00
MUI_GOTO ( 5 , 37 , 15 , " Text Input " )
MUI_GOTO ( 5 , 49 , 16 , " Single Line Selection " )
2021-09-13 05:43:19 +08:00
MUI_GOTO ( 5 , 61 , 2 , " More... " )
MUI_FORM ( 2 )
MUI_STYLE ( 1 )
2021-09-26 04:59:59 +08:00
MUI_LABEL ( 5 , 10 , " Main Menu 3/3 " )
2021-09-13 05:43:19 +08:00
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_GOTO ( 5 , 25 , 17 , " List Line Selection " )
MUI_GOTO ( 5 , 37 , 18 , " Parent/Child List " )
MUI_GOTO ( 5 , 49 , 20 , " Array Edit " )
2021-09-26 04:59:59 +08:00
MUI_GOTO ( 5 , 61 , 3 , " Alternative Menu " )
MUI_FORM ( 3 )
MUI_STYLE ( 1 )
MUI_LABEL ( 5 , 10 , " Alternative Menu " )
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_XYA ( " LG " , 5 , 25 , 0 )
MUI_XYA ( " LG " , 5 , 37 , 1 )
MUI_XYA ( " LG " , 5 , 49 , 2 )
MUI_XYA ( " LG " , 5 , 61 , 3 )
2021-08-29 16:50:01 +08:00
/* number entry demo */
MUI_FORM ( 10 )
MUI_STYLE ( 1 )
2021-09-07 05:51:26 +08:00
MUI_LABEL ( 5 , 10 , " Number Menu " )
2021-08-29 16:50:01 +08:00
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
2021-09-07 05:51:26 +08:00
MUI_LABEL ( 5 , 27 , " Number [mse]: " )
MUI_XY ( " IN " , 76 , 27 )
MUI_LABEL ( 5 , 41 , " Number [mud]: " )
MUI_XY ( " IH " , 76 , 41 )
2021-08-29 16:50:01 +08:00
2021-09-07 05:51:26 +08:00
MUI_XYAT ( " G1 " , 64 , 59 , 0 , " OK " )
2021-08-29 16:50:01 +08:00
2021-09-07 05:51:26 +08:00
/* parent / child selection */
2021-08-29 16:50:01 +08:00
MUI_FORM ( 11 )
MUI_STYLE ( 1 )
2021-09-07 05:51:26 +08:00
MUI_LABEL ( 5 , 10 , " Parent/Child Selection " )
2021-08-29 16:50:01 +08:00
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
2021-09-26 04:59:59 +08:00
MUI_LABEL ( 5 , 24 , " Color: " )
MUI_XYAT ( " IC " , 80 , 24 , 12 , " red|orange|yellow|green|cyan|azure|blue|violet|magenta|rose " ) /* jump to sub form 12 */
MUI_LABEL ( 5 , 42 , " We need: " )
MUI_STYLE ( 3 )
MUI_XYAT ( " ID " , 80 , 49 , 21 , " \x30 | \x31 | \x32 | \x33 | \x34 | \x35 | \x36 | \x37 | \x38 | \x39 | \x40 | \x41 | \x42 | \x43 " )
MUI_STYLE ( 0 )
MUI_XYAT ( " G1 " , 64 , 60 , 0 , " OK " )
2021-08-29 16:50:01 +08:00
/* combo box color selection */
MUI_FORM ( 12 )
MUI_STYLE ( 1 )
MUI_LABEL ( 5 , 10 , " Color Selection " )
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_XYA ( " OC " , 5 , 30 , 0 ) /* takeover the selection text from calling field ("red") */
MUI_XYA ( " OC " , 5 , 42 , 1 ) /* takeover the selection text from calling field ("green") */
2021-09-13 05:43:19 +08:00
MUI_XYA ( " OC " , 5 , 54 , 2 ) /* */
/* no ok required, clicking on the selection, will jump back */
2021-08-29 16:50:01 +08:00
/* Checkbox demo */
MUI_FORM ( 13 )
MUI_STYLE ( 1 )
MUI_LABEL ( 5 , 10 , " Checkbox Menu " )
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_LABEL ( 5 , 30 , " Checkbox: " )
MUI_XY ( " CB " , 60 , 30 )
2021-09-07 05:51:26 +08:00
MUI_XYAT ( " G1 " , 64 , 59 , 0 , " OK " )
2021-08-29 16:50:01 +08:00
/* Radio selection demo */
MUI_FORM ( 14 )
MUI_STYLE ( 1 )
MUI_LABEL ( 5 , 10 , " Radio Selection Menu " )
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_XYAT ( " RS " , 10 , 28 , 0 , " North " )
MUI_XYAT ( " RS " , 10 , 40 , 1 , " South " )
MUI_XYAT ( " RS " , 65 , 28 , 2 , " East " )
MUI_XYAT ( " RS " , 65 , 40 , 3 , " West " )
MUI_XYAT ( " G1 " , 64 , 59 , 1 , " OK " )
2021-09-07 05:51:26 +08:00
/* text demo */
MUI_FORM ( 15 )
MUI_STYLE ( 1 )
MUI_LABEL ( 5 , 10 , " Enter Text Menu " )
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_LABEL ( 5 , 30 , " Text: " )
MUI_STYLE ( 2 )
MUI_XY ( " T0 " , 40 , 30 )
MUI_XY ( " T1 " , 48 , 30 )
MUI_XY ( " T2 " , 56 , 30 )
MUI_XY ( " T3 " , 64 , 30 )
MUI_STYLE ( 0 )
MUI_XYAT ( " G1 " , 64 , 59 , 1 , " OK " )
/* single line selection */
MUI_FORM ( 16 )
MUI_STYLE ( 1 )
MUI_LABEL ( 5 , 10 , " Single Line Selection " )
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_LABEL ( 5 , 29 , " Fruit [mse]: " )
MUI_XYAT ( " IF " , 60 , 29 , 60 , " Banana|Apple|Melon|Cranberry " )
MUI_LABEL ( 5 , 43 , " Fruit [mud]: " )
MUI_XYAT ( " IG " , 60 , 43 , 60 , " Banana|Apple|Melon|Cranberry " )
MUI_XYAT ( " G1 " , 64 , 59 , 1 , " OK " )
2021-09-13 05:43:19 +08:00
/* long list example with list callback functions */
MUI_FORM ( 17 )
MUI_STYLE ( 1 )
MUI_LABEL ( 5 , 10 , " List Line Selection " )
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_LABEL ( 5 , 29 , " List [mse]: " )
MUI_XYA ( " L1 " , 60 , 29 , 60 )
MUI_LABEL ( 5 , 43 , " List [mud]: " )
MUI_XYA ( " L2 " , 60 , 43 , 60 )
MUI_XYAT ( " G1 " , 64 , 59 , 2 , " OK " )
/* parent / child selection */
MUI_FORM ( 18 )
MUI_STYLE ( 1 )
MUI_LABEL ( 5 , 10 , " Parent/Child List " )
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_LABEL ( 5 , 29 , " Animal: " )
MUI_XYA ( " LP " , 50 , 29 , 19 ) /* jump to sub form 19 */
MUI_XYAT ( " G1 " , 64 , 59 , 2 , " OK " )
/* combo box color selection */
MUI_FORM ( 19 )
MUI_STYLE ( 1 )
MUI_LABEL ( 5 , 10 , " Animal Selection " )
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_XYA ( " LC " , 5 , 30 , 0 ) /* takeover the selection text from calling field ("red") */
MUI_XYA ( " LC " , 5 , 42 , 1 ) /* takeover the selection text from calling field ("green") */
MUI_XYA ( " LC " , 5 , 54 , 2 ) /* */
/* no ok required, clicking on the selection, will jump back */
MUI_FORM ( 20 )
MUI_STYLE ( 1 )
MUI_LABEL ( 5 , 10 , " Array Edit " )
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 0 )
MUI_LABEL ( 5 , 24 , " Position: " )
MUI_XY ( " AP " , 76 , 24 )
MUI_LABEL ( 5 , 35 , " LED off: " )
MUI_XY ( " AF " , 76 , 35 )
MUI_LABEL ( 5 , 46 , " LED on: " )
MUI_XY ( " AN " , 76 , 46 )
MUI_XYAT ( " G1 " , 64 , 59 , 2 , " OK " )
2021-09-26 04:59:59 +08:00
/* combo box Food & Drink Selection, called from form 11 */
MUI_FORM ( 21 )
MUI_STYLE ( 1 )
MUI_LABEL ( 5 , 10 , " Food & Drink Selection " )
MUI_XY ( " HR " , 0 , 13 )
MUI_STYLE ( 3 )
MUI_XYA ( " OD " , 3 , 45 , 0 )
MUI_XYA ( " OD " , 28 , 45 , 1 )
MUI_XYA ( " OD " , 53 , 45 , 2 )
MUI_XYA ( " OD " , 78 , 45 , 3 )
MUI_XYA ( " OD " , 103 , 45 , 4 )
2021-08-29 16:50:01 +08:00
;
void setup ( void ) {
// U8g2 SH1106 Proto-Shield
//u8g2.begin(/* menu_select_pin= */ 2, /* menu_next_pin= */ 4, /* menu_prev_pin= */ 7, /* menu_up_pin= */ 6, /* menu_down_pin= */ 5, /* menu_home_pin= */ 3);
// DOGS102 Shield (http://shieldlist.org/controlconnection/dogs102)
u8g2 . begin ( /* menu_select_pin= */ 5 , /* menu_next_pin= */ 4 , /* menu_prev_pin= */ 2 , /* menu_up_pin= */ U8X8_PIN_NONE , /* menu_down_pin= */ U8X8_PIN_NONE , /* menu_home_pin= */ 3 ) ;
// DOGM128 Shield (http://shieldlist.org/schmelle2/dogm128) + DOGXL160 Shield
//u8g2.begin(/* menu_select_pin= */ 2, /* menu_next_pin= */ 3, /* menu_prev_pin= */ 7, /* menu_up_pin= */ U8X8_PIN_NONE, /* menu_down_pin= */ U8X8_PIN_NONE, /* menu_home_pin= */ 8);
// MKR Zero Test Board
// u8g2.begin(/*Select=*/ 0, /*Right/Next=*/ 1, /*Left/Prev=*/ 2, /*Up=*/ 4, /*Down=*/ 3, /*Home/Cancel=*/ A6);
// Arduboy
//u8g2.begin(/*Select=*/ A0, /*Right/Next=*/ 5, /*Left/Prev=*/ 9, /*Up=*/ 8, /*Down=*/ 10, /*Home/Cancel=*/ A1); // Arduboy DevKit
//u8g2.begin(/*Select=*/ 7, /*Right/Next=*/ A1, /*Left/Prev=*/ A2, /*Up=*/ A0, /*Down=*/ A3, /*Home/Cancel=*/ 8); // Arduboy 10 (Production)
2021-09-26 04:59:59 +08:00
u8g2 . setFontMode ( 1 ) ;
2021-08-30 05:00:17 +08:00
mui . begin ( u8g2 , fds_data , muif_list , sizeof ( muif_list ) / sizeof ( muif_t ) ) ;
2021-09-07 05:51:26 +08:00
mui . gotoForm ( /* form_id= */ 0 , /* initial_cursor_position= */ 0 ) ;
2021-08-29 16:50:01 +08:00
}
uint8_t is_redraw = 1 ;
void loop ( void ) {
2021-08-29 18:32:43 +08:00
/* check whether the menu is active */
2021-08-30 05:00:17 +08:00
//if ( mui_IsFormActive(&ui) )
if ( mui . isFormActive ( ) )
2021-08-29 18:32:43 +08:00
{
/* if so, then draw the menu */
2021-08-29 16:50:01 +08:00
2021-08-29 18:32:43 +08:00
if ( is_redraw ) {
u8g2 . firstPage ( ) ;
do {
2021-08-30 05:00:17 +08:00
mui . draw ( ) ;
2021-08-29 18:32:43 +08:00
} while ( u8g2 . nextPage ( ) ) ;
is_redraw = 0 ;
}
/* handle events */
switch ( u8g2 . getMenuEvent ( ) ) {
case U8X8_MSG_GPIO_MENU_SELECT :
2021-08-30 05:00:17 +08:00
mui . sendSelect ( ) ;
2021-08-29 18:32:43 +08:00
is_redraw = 1 ;
break ;
case U8X8_MSG_GPIO_MENU_NEXT :
2021-08-30 05:00:17 +08:00
mui . nextField ( ) ;
2021-08-29 18:32:43 +08:00
is_redraw = 1 ;
break ;
case U8X8_MSG_GPIO_MENU_PREV :
2021-08-30 05:00:17 +08:00
mui . prevField ( ) ;
2021-08-29 18:32:43 +08:00
is_redraw = 1 ;
break ;
}
2021-08-29 16:50:01 +08:00
}
2021-08-29 18:32:43 +08:00
else
{
/* do something else, maybe clear the screen */
2021-08-29 16:50:01 +08:00
}
}