From 057c128d4e33f034169a9b92b268457745d6ea68 Mon Sep 17 00:00:00 2001 From: theeprawn <43965085+theeprawn@users.noreply.github.com> Date: Mon, 2 Nov 2020 01:40:46 +0000 Subject: [PATCH 1/4] draw_hvtile --- cppsrc/U8g2lib.h | 366 ++++++++++- cppsrc/U8x8lib.h | 1104 +++++++++++++++++++++++++++++++++- csrc/u8g2.h | 12 + csrc/u8g2_buffer.c | 23 +- csrc/u8g2_d_setup.c | 104 ++++ csrc/u8x8.h | 34 +- csrc/u8x8_8x8.c | 21 +- csrc/u8x8_capture.c | 39 +- csrc/u8x8_d_sh1122_256x64.c | 272 +++++++++ csrc/u8x8_d_ssd1362_256x64.c | 282 +++++++++ csrc/u8x8_display.c | 37 +- csrc/u8x8_draw_hvtile.c | 91 +++ csrc/u8x8_setup.c | 13 + tools/codebuild/codebuild.c | 29 +- 14 files changed, 2371 insertions(+), 56 deletions(-) create mode 100644 csrc/u8x8_d_sh1122_256x64.c create mode 100644 csrc/u8x8_d_ssd1362_256x64.c create mode 100644 csrc/u8x8_draw_hvtile.c diff --git a/cppsrc/U8g2lib.h b/cppsrc/U8g2lib.h index f0532671e..61f7e5477 100644 --- a/cppsrc/U8g2lib.h +++ b/cppsrc/U8g2lib.h @@ -79,8 +79,10 @@ class U8G2 : public Print /* u8x8 interface */ uint8_t getCols(void) { return u8x8_GetCols(u8g2_GetU8x8(&u8g2)); } uint8_t getRows(void) { return u8x8_GetRows(u8g2_GetU8x8(&u8g2)); } - void drawTile(uint8_t x, uint8_t y, uint8_t cnt, uint8_t *tile_ptr) { - u8x8_DrawTile(u8g2_GetU8x8(&u8g2), x, y, cnt, tile_ptr); } + void drawTile(uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t *tile_ptr) { /* for legacy compatiablity */ + u8x8_DrawTile(u8g2_GetU8x8(&u8g2), tx, ty, tile_cnt, 1/*copies*/, tile_cnt/*tile_buffer_width*/, tile_ptr); } + void drawTile(uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t copies, uint8_t tile_buffer_width, uint8_t *tile_ptr) { + u8x8_DrawTile(u8g2_GetU8x8(&u8g2), tx, ty, tile_cnt, copies, tile_buffer_width, tile_ptr); } #ifdef U8X8_WITH_USER_PTR void *getUserPtr() { return u8g2_GetUserPtr(&u8g2); } @@ -4046,6 +4048,186 @@ class U8G2_SH1122_256X64_F_2ND_HW_I2C : public U8G2 { u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; +class U8G2_SH1122_256X64_MIDAS_1_4W_SW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_1_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_1(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_1_4W_HW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_1_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_1(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_1_2ND_4W_HW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_1_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_1_3W_SW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_1_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_1(&u8g2, rotation, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_1_3W_HW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_1_3W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_1(&u8g2, rotation, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_1_6800 : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_1_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_1(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_1_8080 : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_1_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_1(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_2_4W_SW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_2_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_2(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_2_4W_HW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_2_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_2(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_2_2ND_4W_HW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_2_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_2(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_2_3W_SW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_2_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_2(&u8g2, rotation, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_2_3W_HW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_2_3W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_2(&u8g2, rotation, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_2_6800 : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_2_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_2(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_2_8080 : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_2_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_2(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_F_4W_SW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_F_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_f(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_F_4W_HW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_F_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_f(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_F_2ND_4W_HW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_F_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_f(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_F_3W_SW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_F_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_f(&u8g2, rotation, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_F_3W_HW_SPI : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_F_3W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_f(&u8g2, rotation, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_F_6800 : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_F_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_f(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_F_8080 : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_F_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_256x64_midas_f(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_1_SW_I2C : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_1_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_i2c_256x64_midas_1(&u8g2, rotation, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_1_HW_I2C : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_i2c_256x64_midas_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); + } +}; +class U8G2_SH1122_256X64_MIDAS_1_2ND_HW_I2C : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_1_2ND_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_i2c_256x64_midas_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_2_SW_I2C : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_2_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_i2c_256x64_midas_2(&u8g2, rotation, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_2_HW_I2C : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_i2c_256x64_midas_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); + } +}; +class U8G2_SH1122_256X64_MIDAS_2_2ND_HW_I2C : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_2_2ND_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_i2c_256x64_midas_2(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_F_SW_I2C : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_F_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_i2c_256x64_midas_f(&u8g2, rotation, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); + } +}; +class U8G2_SH1122_256X64_MIDAS_F_HW_I2C : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_i2c_256x64_midas_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); + } +}; +class U8G2_SH1122_256X64_MIDAS_F_2ND_HW_I2C : public U8G2 { + public: U8G2_SH1122_256X64_MIDAS_F_2ND_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_sh1122_i2c_256x64_midas_f(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset); + } +}; class U8G2_SSD1306_128X32_UNIVISION_1_4W_SW_SPI : public U8G2 { public: U8G2_SSD1306_128X32_UNIVISION_1_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { u8g2_Setup_ssd1306_128x32_univision_1(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); @@ -7952,6 +8134,186 @@ class U8G2_SSD1329_128X96_NONAME_F_8080 : public U8G2 { u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; +class U8G2_SSD1362_256X64_RAYSTAR_1_4W_SW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_1_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_1(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_1_4W_HW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_1_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_1(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_1_2ND_4W_HW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_1_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_1_3W_SW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_1_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_1(&u8g2, rotation, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_1_3W_HW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_1_3W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_1(&u8g2, rotation, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_1_6800 : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_1_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_1(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_1_8080 : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_1_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_1(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_2_4W_SW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_2_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_2(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_2_4W_HW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_2_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_2(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_2_2ND_4W_HW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_2_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_2(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_2_3W_SW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_2_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_2(&u8g2, rotation, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_2_3W_HW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_2_3W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_2(&u8g2, rotation, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_2_6800 : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_2_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_2(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_2_8080 : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_2_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_2(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_F_4W_SW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_F_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_f(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_F_4W_HW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_F_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_f(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_F_2ND_4W_HW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_F_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_f(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_F_3W_SW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_F_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_f(&u8g2, rotation, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_F_3W_HW_SPI : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_F_3W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_f(&u8g2, rotation, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_F_6800 : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_F_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_f(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_F_8080 : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_F_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_256x64_raystar_f(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_1_SW_I2C : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_1_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_i2c_256x64_raystar_1(&u8g2, rotation, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_1_HW_I2C : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_i2c_256x64_raystar_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_1_2ND_HW_I2C : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_1_2ND_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_i2c_256x64_raystar_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_2_SW_I2C : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_2_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_i2c_256x64_raystar_2(&u8g2, rotation, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_2_HW_I2C : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_i2c_256x64_raystar_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_2_2ND_HW_I2C : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_2_2ND_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_i2c_256x64_raystar_2(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_F_SW_I2C : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_F_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_i2c_256x64_raystar_f(&u8g2, rotation, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_F_HW_I2C : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_i2c_256x64_raystar_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); + } +}; +class U8G2_SSD1362_256X64_RAYSTAR_F_2ND_HW_I2C : public U8G2 { + public: U8G2_SSD1362_256X64_RAYSTAR_F_2ND_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_ssd1362_i2c_256x64_raystar_f(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_HW_I2C(getU8x8(), reset); + } +}; class U8G2_LD7032_60X32_1_4W_SW_SPI : public U8G2 { public: U8G2_LD7032_60X32_1_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { u8g2_Setup_ld7032_60x32_1(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); diff --git a/cppsrc/U8x8lib.h b/cppsrc/U8x8lib.h index 9fb8eaeb9..e1f1286e0 100644 --- a/cppsrc/U8x8lib.h +++ b/cppsrc/U8x8lib.h @@ -183,8 +183,10 @@ class U8X8 : public Print uint8_t getCols(void) { return u8x8_GetCols(&u8x8); } uint8_t getRows(void) { return u8x8_GetRows(&u8x8); } - void drawTile(uint8_t x, uint8_t y, uint8_t cnt, uint8_t *tile_ptr) { - u8x8_DrawTile(&u8x8, x, y, cnt, tile_ptr); } + void drawTile(uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t *tile_ptr) { /* for legacy compatiablity */ + u8x8_DrawTile(&u8x8, tx, ty, tile_cnt, 1/*copies*/, tile_cnt/*tile_buffer_width*/, tile_ptr); } + void drawTile(uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t copies, uint8_t tile_buffer_width, uint8_t *tile_ptr) { + u8x8_DrawTile(&u8x8, tx, ty, tile_cnt, copies, tile_buffer_width, tile_ptr); } #ifdef U8X8_WITH_USER_PTR void *getUserPtr() { return u8x8_GetUserPtr(&u8x8); } @@ -402,5748 +404,6846 @@ class U8X8_NULL : public U8X8 { class U8X8_SSD1305_128X32_NONAME_4W_SW_SPI : public U8X8 { public: U8X8_SSD1305_128X32_NONAME_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_noname, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1305_128X32_NONAME_4W_HW_SPI : public U8X8 { public: U8X8_SSD1305_128X32_NONAME_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_noname, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1305_128X32_NONAME_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1305_128X32_NONAME_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_noname, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1305_128X32_NONAME_6800 : public U8X8 { public: U8X8_SSD1305_128X32_NONAME_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_noname, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1305_128X32_NONAME_8080 : public U8X8 { public: U8X8_SSD1305_128X32_NONAME_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_noname, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1305_128X32_ADAFRUIT_4W_SW_SPI : public U8X8 { public: U8X8_SSD1305_128X32_ADAFRUIT_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_adafruit, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1305_128X32_ADAFRUIT_4W_HW_SPI : public U8X8 { public: U8X8_SSD1305_128X32_ADAFRUIT_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_adafruit, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1305_128X32_ADAFRUIT_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1305_128X32_ADAFRUIT_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_adafruit, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1305_128X32_ADAFRUIT_6800 : public U8X8 { public: U8X8_SSD1305_128X32_ADAFRUIT_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_adafruit, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1305_128X32_ADAFRUIT_8080 : public U8X8 { public: U8X8_SSD1305_128X32_ADAFRUIT_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_adafruit, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1305_128X32_NONAME_SW_I2C : public U8X8 { public: U8X8_SSD1305_128X32_NONAME_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_noname, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1305_128X32_NONAME_HW_I2C : public U8X8 { public: U8X8_SSD1305_128X32_NONAME_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_noname, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1305_128X32_NONAME_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1305_128X32_NONAME_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_noname, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1305_128X32_ADAFRUIT_SW_I2C : public U8X8 { public: U8X8_SSD1305_128X32_ADAFRUIT_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_adafruit, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1305_128X32_ADAFRUIT_HW_I2C : public U8X8 { public: U8X8_SSD1305_128X32_ADAFRUIT_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_adafruit, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1305_128X32_ADAFRUIT_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1305_128X32_ADAFRUIT_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x32_adafruit, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1305_128X64_ADAFRUIT_4W_SW_SPI : public U8X8 { public: U8X8_SSD1305_128X64_ADAFRUIT_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_adafruit, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1305_128X64_ADAFRUIT_4W_HW_SPI : public U8X8 { public: U8X8_SSD1305_128X64_ADAFRUIT_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_adafruit, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1305_128X64_ADAFRUIT_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1305_128X64_ADAFRUIT_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_adafruit, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1305_128X64_ADAFRUIT_6800 : public U8X8 { public: U8X8_SSD1305_128X64_ADAFRUIT_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_adafruit, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1305_128X64_ADAFRUIT_8080 : public U8X8 { public: U8X8_SSD1305_128X64_ADAFRUIT_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_adafruit, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1305_128X64_RAYSTAR_4W_SW_SPI : public U8X8 { public: U8X8_SSD1305_128X64_RAYSTAR_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_raystar, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1305_128X64_RAYSTAR_4W_HW_SPI : public U8X8 { public: U8X8_SSD1305_128X64_RAYSTAR_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_raystar, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1305_128X64_RAYSTAR_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1305_128X64_RAYSTAR_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_raystar, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1305_128X64_RAYSTAR_6800 : public U8X8 { public: U8X8_SSD1305_128X64_RAYSTAR_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_raystar, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1305_128X64_RAYSTAR_8080 : public U8X8 { public: U8X8_SSD1305_128X64_RAYSTAR_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_raystar, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1305_128X64_ADAFRUIT_SW_I2C : public U8X8 { public: U8X8_SSD1305_128X64_ADAFRUIT_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_adafruit, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1305_128X64_ADAFRUIT_HW_I2C : public U8X8 { public: U8X8_SSD1305_128X64_ADAFRUIT_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_adafruit, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1305_128X64_ADAFRUIT_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1305_128X64_ADAFRUIT_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_adafruit, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1305_128X64_RAYSTAR_SW_I2C : public U8X8 { public: U8X8_SSD1305_128X64_RAYSTAR_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_raystar, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1305_128X64_RAYSTAR_HW_I2C : public U8X8 { public: U8X8_SSD1305_128X64_RAYSTAR_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_raystar, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1305_128X64_RAYSTAR_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1305_128X64_RAYSTAR_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1305_128x64_raystar, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1306_2040X16_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_2040X16_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_2040x16, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_2040X16_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_2040X16_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_2040x16, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_2040X16_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_2040X16_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_2040x16, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_2040X16_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_2040X16_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_2040x16, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_2040X16_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_2040X16_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_2040x16, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_2040X16_6800 : public U8X8 { public: U8X8_SSD1306_2040X16_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_2040x16, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_2040X16_8080 : public U8X8 { public: U8X8_SSD1306_2040X16_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_2040x16, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_128X64_NONAME_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_NONAME_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_128X64_NONAME_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_NONAME_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_128X64_NONAME_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_NONAME_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_128X64_NONAME_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_NONAME_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_128X64_NONAME_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_NONAME_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_128X64_NONAME_6800 : public U8X8 { public: U8X8_SSD1306_128X64_NONAME_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_128X64_NONAME_8080 : public U8X8 { public: U8X8_SSD1306_128X64_NONAME_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_128X64_VCOMH0_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_VCOMH0_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_128X64_VCOMH0_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_VCOMH0_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_128X64_VCOMH0_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_VCOMH0_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_128X64_VCOMH0_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_VCOMH0_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_128X64_VCOMH0_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_VCOMH0_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_128X64_VCOMH0_6800 : public U8X8 { public: U8X8_SSD1306_128X64_VCOMH0_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_vcomh0, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_128X64_VCOMH0_8080 : public U8X8 { public: U8X8_SSD1306_128X64_VCOMH0_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_128X64_ALT0_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_ALT0_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_alt0, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_128X64_ALT0_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_ALT0_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_alt0, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_128X64_ALT0_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_ALT0_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_alt0, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_128X64_ALT0_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_ALT0_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_alt0, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_128X64_ALT0_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_ALT0_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_alt0, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_128X64_ALT0_6800 : public U8X8 { public: U8X8_SSD1306_128X64_ALT0_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_alt0, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_128X64_ALT0_8080 : public U8X8 { public: U8X8_SSD1306_128X64_ALT0_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_alt0, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_128X64_NONAME_SW_I2C : public U8X8 { public: U8X8_SSD1306_128X64_NONAME_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1306_128X64_NONAME_HW_I2C : public U8X8 { public: U8X8_SSD1306_128X64_NONAME_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_128X64_NONAME_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1306_128X64_NONAME_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1306_128X64_VCOMH0_SW_I2C : public U8X8 { public: U8X8_SSD1306_128X64_VCOMH0_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_vcomh0, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1306_128X64_VCOMH0_HW_I2C : public U8X8 { public: U8X8_SSD1306_128X64_VCOMH0_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_vcomh0, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_128X64_VCOMH0_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1306_128X64_VCOMH0_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_vcomh0, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1306_128X64_ALT0_SW_I2C : public U8X8 { public: U8X8_SSD1306_128X64_ALT0_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_alt0, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1306_128X64_ALT0_HW_I2C : public U8X8 { public: U8X8_SSD1306_128X64_ALT0_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_alt0, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_128X64_ALT0_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1306_128X64_ALT0_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_alt0, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1306_72X40_ER_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_72X40_ER_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_72x40_er, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_72X40_ER_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_72X40_ER_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_72x40_er, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_72X40_ER_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_72X40_ER_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_72x40_er, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_72X40_ER_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_72X40_ER_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_72x40_er, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_72X40_ER_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_72X40_ER_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_72x40_er, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_72X40_ER_6800 : public U8X8 { public: U8X8_SSD1306_72X40_ER_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_72x40_er, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_72X40_ER_8080 : public U8X8 { public: U8X8_SSD1306_72X40_ER_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_72x40_er, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_72X40_ER_SW_I2C : public U8X8 { public: U8X8_SSD1306_72X40_ER_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_72x40_er, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1306_72X40_ER_HW_I2C : public U8X8 { public: U8X8_SSD1306_72X40_ER_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_72x40_er, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_72X40_ER_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1306_72X40_ER_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_72x40_er, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1106_128X64_NONAME_4W_SW_SPI : public U8X8 { public: U8X8_SH1106_128X64_NONAME_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1106_128X64_NONAME_4W_HW_SPI : public U8X8 { public: U8X8_SH1106_128X64_NONAME_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1106_128X64_NONAME_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1106_128X64_NONAME_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1106_128X64_NONAME_3W_SW_SPI : public U8X8 { public: U8X8_SH1106_128X64_NONAME_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1106_128X64_NONAME_3W_HW_SPI : public U8X8 { public: U8X8_SH1106_128X64_NONAME_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1106_128X64_NONAME_6800 : public U8X8 { public: U8X8_SH1106_128X64_NONAME_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_noname, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1106_128X64_NONAME_8080 : public U8X8 { public: U8X8_SH1106_128X64_NONAME_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1106_128X64_VCOMH0_4W_SW_SPI : public U8X8 { public: U8X8_SH1106_128X64_VCOMH0_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1106_128X64_VCOMH0_4W_HW_SPI : public U8X8 { public: U8X8_SH1106_128X64_VCOMH0_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1106_128X64_VCOMH0_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1106_128X64_VCOMH0_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1106_128X64_VCOMH0_3W_SW_SPI : public U8X8 { public: U8X8_SH1106_128X64_VCOMH0_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1106_128X64_VCOMH0_3W_HW_SPI : public U8X8 { public: U8X8_SH1106_128X64_VCOMH0_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1106_128X64_VCOMH0_6800 : public U8X8 { public: U8X8_SH1106_128X64_VCOMH0_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_vcomh0, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1106_128X64_VCOMH0_8080 : public U8X8 { public: U8X8_SH1106_128X64_VCOMH0_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_vcomh0, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1106_128X64_WINSTAR_4W_SW_SPI : public U8X8 { public: U8X8_SH1106_128X64_WINSTAR_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_winstar, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1106_128X64_WINSTAR_4W_HW_SPI : public U8X8 { public: U8X8_SH1106_128X64_WINSTAR_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_winstar, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1106_128X64_WINSTAR_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1106_128X64_WINSTAR_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_winstar, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1106_128X64_WINSTAR_3W_SW_SPI : public U8X8 { public: U8X8_SH1106_128X64_WINSTAR_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_winstar, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1106_128X64_WINSTAR_3W_HW_SPI : public U8X8 { public: U8X8_SH1106_128X64_WINSTAR_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_winstar, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1106_128X64_WINSTAR_6800 : public U8X8 { public: U8X8_SH1106_128X64_WINSTAR_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_winstar, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1106_128X64_WINSTAR_8080 : public U8X8 { public: U8X8_SH1106_128X64_WINSTAR_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_winstar, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1106_128X64_NONAME_SW_I2C : public U8X8 { public: U8X8_SH1106_128X64_NONAME_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_noname, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1106_128X64_NONAME_HW_I2C : public U8X8 { public: U8X8_SH1106_128X64_NONAME_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_noname, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1106_128X64_NONAME_2ND_HW_I2C : public U8X8 { public: U8X8_SH1106_128X64_NONAME_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_noname, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1106_128X64_VCOMH0_SW_I2C : public U8X8 { public: U8X8_SH1106_128X64_VCOMH0_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_vcomh0, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1106_128X64_VCOMH0_HW_I2C : public U8X8 { public: U8X8_SH1106_128X64_VCOMH0_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_vcomh0, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1106_128X64_VCOMH0_2ND_HW_I2C : public U8X8 { public: U8X8_SH1106_128X64_VCOMH0_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_vcomh0, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1106_128X64_WINSTAR_SW_I2C : public U8X8 { public: U8X8_SH1106_128X64_WINSTAR_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_winstar, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1106_128X64_WINSTAR_HW_I2C : public U8X8 { public: U8X8_SH1106_128X64_WINSTAR_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_winstar, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1106_128X64_WINSTAR_2ND_HW_I2C : public U8X8 { public: U8X8_SH1106_128X64_WINSTAR_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_128x64_winstar, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1106_72X40_WISE_4W_SW_SPI : public U8X8 { public: U8X8_SH1106_72X40_WISE_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_72x40_wise, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1106_72X40_WISE_4W_HW_SPI : public U8X8 { public: U8X8_SH1106_72X40_WISE_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_72x40_wise, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1106_72X40_WISE_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1106_72X40_WISE_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_72x40_wise, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1106_72X40_WISE_3W_SW_SPI : public U8X8 { public: U8X8_SH1106_72X40_WISE_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_72x40_wise, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1106_72X40_WISE_3W_HW_SPI : public U8X8 { public: U8X8_SH1106_72X40_WISE_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_72x40_wise, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1106_72X40_WISE_6800 : public U8X8 { public: U8X8_SH1106_72X40_WISE_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_72x40_wise, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1106_72X40_WISE_8080 : public U8X8 { public: U8X8_SH1106_72X40_WISE_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_72x40_wise, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1106_72X40_WISE_SW_I2C : public U8X8 { public: U8X8_SH1106_72X40_WISE_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_72x40_wise, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1106_72X40_WISE_HW_I2C : public U8X8 { public: U8X8_SH1106_72X40_WISE_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_72x40_wise, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1106_72X40_WISE_2ND_HW_I2C : public U8X8 { public: U8X8_SH1106_72X40_WISE_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_72x40_wise, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1106_64X32_4W_SW_SPI : public U8X8 { public: U8X8_SH1106_64X32_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_64x32, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1106_64X32_4W_HW_SPI : public U8X8 { public: U8X8_SH1106_64X32_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_64x32, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1106_64X32_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1106_64X32_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_64x32, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1106_64X32_3W_SW_SPI : public U8X8 { public: U8X8_SH1106_64X32_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_64x32, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1106_64X32_3W_HW_SPI : public U8X8 { public: U8X8_SH1106_64X32_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_64x32, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1106_64X32_6800 : public U8X8 { public: U8X8_SH1106_64X32_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_64x32, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1106_64X32_8080 : public U8X8 { public: U8X8_SH1106_64X32_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_64x32, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1106_64X32_SW_I2C : public U8X8 { public: U8X8_SH1106_64X32_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_64x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1106_64X32_HW_I2C : public U8X8 { public: U8X8_SH1106_64X32_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_64x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1106_64X32_2ND_HW_I2C : public U8X8 { public: U8X8_SH1106_64X32_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1106_64x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1107_64X128_4W_SW_SPI : public U8X8 { public: U8X8_SH1107_64X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_64x128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1107_64X128_4W_HW_SPI : public U8X8 { public: U8X8_SH1107_64X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_64x128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1107_64X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1107_64X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_64x128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1107_64X128_3W_SW_SPI : public U8X8 { public: U8X8_SH1107_64X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_64x128, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1107_64X128_3W_HW_SPI : public U8X8 { public: U8X8_SH1107_64X128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_64x128, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1107_64X128_6800 : public U8X8 { public: U8X8_SH1107_64X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_64x128, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1107_64X128_8080 : public U8X8 { public: U8X8_SH1107_64X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_64x128, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1107_64X128_SW_I2C : public U8X8 { public: U8X8_SH1107_64X128_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_64x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1107_64X128_HW_I2C : public U8X8 { public: U8X8_SH1107_64X128_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_64x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1107_64X128_2ND_HW_I2C : public U8X8 { public: U8X8_SH1107_64X128_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_64x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1107_SEEED_96X96_4W_SW_SPI : public U8X8 { public: U8X8_SH1107_SEEED_96X96_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1107_SEEED_96X96_4W_HW_SPI : public U8X8 { public: U8X8_SH1107_SEEED_96X96_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1107_SEEED_96X96_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1107_SEEED_96X96_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1107_SEEED_96X96_3W_SW_SPI : public U8X8 { public: U8X8_SH1107_SEEED_96X96_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1107_SEEED_96X96_3W_HW_SPI : public U8X8 { public: U8X8_SH1107_SEEED_96X96_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1107_SEEED_96X96_6800 : public U8X8 { public: U8X8_SH1107_SEEED_96X96_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_96x96, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1107_SEEED_96X96_8080 : public U8X8 { public: U8X8_SH1107_SEEED_96X96_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1107_SEEED_96X96_SW_I2C : public U8X8 { public: U8X8_SH1107_SEEED_96X96_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_96x96, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1107_SEEED_96X96_HW_I2C : public U8X8 { public: U8X8_SH1107_SEEED_96X96_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_96x96, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1107_SEEED_96X96_2ND_HW_I2C : public U8X8 { public: U8X8_SH1107_SEEED_96X96_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_96x96, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1107_128X128_4W_SW_SPI : public U8X8 { public: U8X8_SH1107_128X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_128x128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1107_128X128_4W_HW_SPI : public U8X8 { public: U8X8_SH1107_128X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_128x128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1107_128X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1107_128X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_128x128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1107_128X128_3W_SW_SPI : public U8X8 { public: U8X8_SH1107_128X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_128x128, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1107_128X128_3W_HW_SPI : public U8X8 { public: U8X8_SH1107_128X128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_128x128, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1107_128X128_6800 : public U8X8 { public: U8X8_SH1107_128X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_128x128, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1107_128X128_8080 : public U8X8 { public: U8X8_SH1107_128X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_128x128, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1107_PIMORONI_128X128_4W_SW_SPI : public U8X8 { public: U8X8_SH1107_PIMORONI_128X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_pimoroni_128x128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1107_PIMORONI_128X128_4W_HW_SPI : public U8X8 { public: U8X8_SH1107_PIMORONI_128X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_pimoroni_128x128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1107_PIMORONI_128X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1107_PIMORONI_128X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_pimoroni_128x128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1107_PIMORONI_128X128_3W_SW_SPI : public U8X8 { public: U8X8_SH1107_PIMORONI_128X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_pimoroni_128x128, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1107_PIMORONI_128X128_3W_HW_SPI : public U8X8 { public: U8X8_SH1107_PIMORONI_128X128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_pimoroni_128x128, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1107_PIMORONI_128X128_6800 : public U8X8 { public: U8X8_SH1107_PIMORONI_128X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_pimoroni_128x128, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1107_PIMORONI_128X128_8080 : public U8X8 { public: U8X8_SH1107_PIMORONI_128X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_pimoroni_128x128, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1107_SEEED_128X128_4W_SW_SPI : public U8X8 { public: U8X8_SH1107_SEEED_128X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_128x128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1107_SEEED_128X128_4W_HW_SPI : public U8X8 { public: U8X8_SH1107_SEEED_128X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_128x128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1107_SEEED_128X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1107_SEEED_128X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_128x128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1107_SEEED_128X128_3W_SW_SPI : public U8X8 { public: U8X8_SH1107_SEEED_128X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_128x128, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1107_SEEED_128X128_3W_HW_SPI : public U8X8 { public: U8X8_SH1107_SEEED_128X128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_128x128, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1107_SEEED_128X128_6800 : public U8X8 { public: U8X8_SH1107_SEEED_128X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_128x128, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1107_SEEED_128X128_8080 : public U8X8 { public: U8X8_SH1107_SEEED_128X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_128x128, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1107_128X128_SW_I2C : public U8X8 { public: U8X8_SH1107_128X128_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_128x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1107_128X128_HW_I2C : public U8X8 { public: U8X8_SH1107_128X128_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_128x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1107_128X128_2ND_HW_I2C : public U8X8 { public: U8X8_SH1107_128X128_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_128x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1107_PIMORONI_128X128_SW_I2C : public U8X8 { public: U8X8_SH1107_PIMORONI_128X128_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_pimoroni_128x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1107_PIMORONI_128X128_HW_I2C : public U8X8 { public: U8X8_SH1107_PIMORONI_128X128_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_pimoroni_128x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1107_PIMORONI_128X128_2ND_HW_I2C : public U8X8 { public: U8X8_SH1107_PIMORONI_128X128_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_pimoroni_128x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1107_SEEED_128X128_SW_I2C : public U8X8 { public: U8X8_SH1107_SEEED_128X128_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_128x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1107_SEEED_128X128_HW_I2C : public U8X8 { public: U8X8_SH1107_SEEED_128X128_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_128x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1107_SEEED_128X128_2ND_HW_I2C : public U8X8 { public: U8X8_SH1107_SEEED_128X128_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1107_seeed_128x128, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1108_160X160_4W_SW_SPI : public U8X8 { public: U8X8_SH1108_160X160_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1108_160x160, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1108_160X160_4W_HW_SPI : public U8X8 { public: U8X8_SH1108_160X160_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1108_160x160, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1108_160X160_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1108_160X160_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1108_160x160, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1108_160X160_3W_SW_SPI : public U8X8 { public: U8X8_SH1108_160X160_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1108_160x160, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1108_160X160_3W_HW_SPI : public U8X8 { public: U8X8_SH1108_160X160_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1108_160x160, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1108_160X160_6800 : public U8X8 { public: U8X8_SH1108_160X160_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1108_160x160, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1108_160X160_8080 : public U8X8 { public: U8X8_SH1108_160X160_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1108_160x160, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1108_160X160_SW_I2C : public U8X8 { public: U8X8_SH1108_160X160_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1108_160x160, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1108_160X160_HW_I2C : public U8X8 { public: U8X8_SH1108_160X160_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1108_160x160, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1108_160X160_2ND_HW_I2C : public U8X8 { public: U8X8_SH1108_160X160_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1108_160x160, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SH1122_256X64_4W_SW_SPI : public U8X8 { public: U8X8_SH1122_256X64_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SH1122_256X64_4W_HW_SPI : public U8X8 { public: U8X8_SH1122_256X64_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1122_256X64_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SH1122_256X64_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SH1122_256X64_3W_SW_SPI : public U8X8 { public: U8X8_SH1122_256X64_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SH1122_256X64_3W_HW_SPI : public U8X8 { public: U8X8_SH1122_256X64_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SH1122_256X64_6800 : public U8X8 { public: U8X8_SH1122_256X64_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1122_256X64_8080 : public U8X8 { public: U8X8_SH1122_256X64_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SH1122_256X64_SW_I2C : public U8X8 { public: U8X8_SH1122_256X64_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SH1122_256X64_HW_I2C : public U8X8 { public: U8X8_SH1122_256X64_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1122_256X64_2ND_HW_I2C : public U8X8 { public: U8X8_SH1122_256X64_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_HW_I2C(getU8x8(), reset); + } +}; +class U8X8_SH1122_256X64_MIDAS_4W_SW_SPI : public U8X8 { + public: U8X8_SH1122_256X64_MIDAS_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64_midas, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8X8_SH1122_256X64_MIDAS_4W_HW_SPI : public U8X8 { + public: U8X8_SH1122_256X64_MIDAS_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64_midas, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8X8_SH1122_256X64_MIDAS_2ND_4W_HW_SPI : public U8X8 { + public: U8X8_SH1122_256X64_MIDAS_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64_midas, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8X8_SH1122_256X64_MIDAS_3W_SW_SPI : public U8X8 { + public: U8X8_SH1122_256X64_MIDAS_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64_midas, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; +class U8X8_SH1122_256X64_MIDAS_3W_HW_SPI : public U8X8 { + public: U8X8_SH1122_256X64_MIDAS_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64_midas, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); + } +}; +class U8X8_SH1122_256X64_MIDAS_6800 : public U8X8 { + public: U8X8_SH1122_256X64_MIDAS_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64_midas, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8X8_SH1122_256X64_MIDAS_8080 : public U8X8 { + public: U8X8_SH1122_256X64_MIDAS_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64_midas, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8X8_SH1122_256X64_MIDAS_SW_I2C : public U8X8 { + public: U8X8_SH1122_256X64_MIDAS_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64_midas, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); + } +}; +class U8X8_SH1122_256X64_MIDAS_HW_I2C : public U8X8 { + public: U8X8_SH1122_256X64_MIDAS_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64_midas, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); + } +}; +class U8X8_SH1122_256X64_MIDAS_2ND_HW_I2C : public U8X8 { + public: U8X8_SH1122_256X64_MIDAS_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_sh1122_256x64_midas, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1306_128X32_UNIVISION_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_128X32_UNIVISION_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_univision, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_128X32_UNIVISION_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X32_UNIVISION_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_univision, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_128X32_UNIVISION_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X32_UNIVISION_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_univision, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_128X32_UNIVISION_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_128X32_UNIVISION_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_univision, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_128X32_UNIVISION_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X32_UNIVISION_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_univision, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_128X32_UNIVISION_6800 : public U8X8 { public: U8X8_SSD1306_128X32_UNIVISION_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_univision, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_128X32_UNIVISION_8080 : public U8X8 { public: U8X8_SSD1306_128X32_UNIVISION_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_univision, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_128X32_WINSTAR_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_128X32_WINSTAR_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_winstar, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_128X32_WINSTAR_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X32_WINSTAR_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_winstar, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_128X32_WINSTAR_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X32_WINSTAR_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_winstar, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_128X32_WINSTAR_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_128X32_WINSTAR_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_winstar, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_128X32_WINSTAR_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_128X32_WINSTAR_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_winstar, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_128X32_WINSTAR_6800 : public U8X8 { public: U8X8_SSD1306_128X32_WINSTAR_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_winstar, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_128X32_WINSTAR_8080 : public U8X8 { public: U8X8_SSD1306_128X32_WINSTAR_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_winstar, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_128X32_UNIVISION_SW_I2C : public U8X8 { public: U8X8_SSD1306_128X32_UNIVISION_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_univision, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1306_128X32_UNIVISION_HW_I2C : public U8X8 { public: U8X8_SSD1306_128X32_UNIVISION_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_univision, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_128X32_UNIVISION_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1306_128X32_UNIVISION_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_univision, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1306_128X32_WINSTAR_SW_I2C : public U8X8 { public: U8X8_SSD1306_128X32_WINSTAR_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_winstar, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1306_128X32_WINSTAR_HW_I2C : public U8X8 { public: U8X8_SSD1306_128X32_WINSTAR_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_winstar, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_128X32_WINSTAR_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1306_128X32_WINSTAR_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x32_winstar, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1306_64X48_ER_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_64X48_ER_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x48_er, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_64X48_ER_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_64X48_ER_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x48_er, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_64X48_ER_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_64X48_ER_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x48_er, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_64X48_ER_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_64X48_ER_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x48_er, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_64X48_ER_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_64X48_ER_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x48_er, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_64X48_ER_6800 : public U8X8 { public: U8X8_SSD1306_64X48_ER_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x48_er, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_64X48_ER_8080 : public U8X8 { public: U8X8_SSD1306_64X48_ER_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x48_er, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_64X48_ER_SW_I2C : public U8X8 { public: U8X8_SSD1306_64X48_ER_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x48_er, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1306_64X48_ER_HW_I2C : public U8X8 { public: U8X8_SSD1306_64X48_ER_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x48_er, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_64X48_ER_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1306_64X48_ER_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x48_er, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1306_48X64_WINSTAR_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_48X64_WINSTAR_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_48x64_winstar, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_48X64_WINSTAR_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_48X64_WINSTAR_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_48x64_winstar, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_48X64_WINSTAR_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_48X64_WINSTAR_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_48x64_winstar, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_48X64_WINSTAR_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_48X64_WINSTAR_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_48x64_winstar, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_48X64_WINSTAR_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_48X64_WINSTAR_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_48x64_winstar, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_48X64_WINSTAR_6800 : public U8X8 { public: U8X8_SSD1306_48X64_WINSTAR_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_48x64_winstar, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_48X64_WINSTAR_8080 : public U8X8 { public: U8X8_SSD1306_48X64_WINSTAR_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_48x64_winstar, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_48X64_WINSTAR_SW_I2C : public U8X8 { public: U8X8_SSD1306_48X64_WINSTAR_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_48x64_winstar, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1306_48X64_WINSTAR_HW_I2C : public U8X8 { public: U8X8_SSD1306_48X64_WINSTAR_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_48x64_winstar, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_48X64_WINSTAR_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1306_48X64_WINSTAR_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_48x64_winstar, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1306_64X32_NONAME_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_64X32_NONAME_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_noname, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_64X32_NONAME_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_64X32_NONAME_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_noname, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_64X32_NONAME_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_64X32_NONAME_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_noname, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_64X32_NONAME_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_64X32_NONAME_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_noname, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_64X32_NONAME_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_64X32_NONAME_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_noname, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_64X32_NONAME_6800 : public U8X8 { public: U8X8_SSD1306_64X32_NONAME_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_noname, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_64X32_NONAME_8080 : public U8X8 { public: U8X8_SSD1306_64X32_NONAME_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_noname, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_64X32_1F_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_64X32_1F_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_1f, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_64X32_1F_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_64X32_1F_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_1f, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_64X32_1F_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_64X32_1F_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_1f, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_64X32_1F_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_64X32_1F_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_1f, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_64X32_1F_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_64X32_1F_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_1f, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_64X32_1F_6800 : public U8X8 { public: U8X8_SSD1306_64X32_1F_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_1f, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_64X32_1F_8080 : public U8X8 { public: U8X8_SSD1306_64X32_1F_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_1f, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_64X32_NONAME_SW_I2C : public U8X8 { public: U8X8_SSD1306_64X32_NONAME_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_noname, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1306_64X32_NONAME_HW_I2C : public U8X8 { public: U8X8_SSD1306_64X32_NONAME_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_noname, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_64X32_NONAME_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1306_64X32_NONAME_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_noname, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1306_64X32_1F_SW_I2C : public U8X8 { public: U8X8_SSD1306_64X32_1F_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_1f, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1306_64X32_1F_HW_I2C : public U8X8 { public: U8X8_SSD1306_64X32_1F_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_1f, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_64X32_1F_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1306_64X32_1F_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_64x32_1f, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1306_96X16_ER_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_96X16_ER_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_96x16_er, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1306_96X16_ER_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_96X16_ER_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_96x16_er, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_96X16_ER_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1306_96X16_ER_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_96x16_er, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1306_96X16_ER_3W_SW_SPI : public U8X8 { public: U8X8_SSD1306_96X16_ER_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_96x16_er, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1306_96X16_ER_3W_HW_SPI : public U8X8 { public: U8X8_SSD1306_96X16_ER_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_96x16_er, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1306_96X16_ER_6800 : public U8X8 { public: U8X8_SSD1306_96X16_ER_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_96x16_er, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_96X16_ER_8080 : public U8X8 { public: U8X8_SSD1306_96X16_ER_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_96x16_er, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1306_96X16_ER_SW_I2C : public U8X8 { public: U8X8_SSD1306_96X16_ER_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_96x16_er, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1306_96X16_ER_HW_I2C : public U8X8 { public: U8X8_SSD1306_96X16_ER_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_96x16_er, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_96X16_ER_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1306_96X16_ER_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_96x16_er, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1309_128X64_NONAME2_4W_SW_SPI : public U8X8 { public: U8X8_SSD1309_128X64_NONAME2_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname2, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1309_128X64_NONAME2_4W_HW_SPI : public U8X8 { public: U8X8_SSD1309_128X64_NONAME2_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname2, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1309_128X64_NONAME2_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1309_128X64_NONAME2_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname2, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1309_128X64_NONAME2_6800 : public U8X8 { public: U8X8_SSD1309_128X64_NONAME2_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname2, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1309_128X64_NONAME2_8080 : public U8X8 { public: U8X8_SSD1309_128X64_NONAME2_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname2, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1309_128X64_NONAME2_SW_I2C : public U8X8 { public: U8X8_SSD1309_128X64_NONAME2_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname2, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1309_128X64_NONAME2_HW_I2C : public U8X8 { public: U8X8_SSD1309_128X64_NONAME2_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname2, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1309_128X64_NONAME2_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1309_128X64_NONAME2_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname2, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1309_128X64_NONAME0_4W_SW_SPI : public U8X8 { public: U8X8_SSD1309_128X64_NONAME0_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname0, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1309_128X64_NONAME0_4W_HW_SPI : public U8X8 { public: U8X8_SSD1309_128X64_NONAME0_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname0, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1309_128X64_NONAME0_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1309_128X64_NONAME0_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname0, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1309_128X64_NONAME0_6800 : public U8X8 { public: U8X8_SSD1309_128X64_NONAME0_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname0, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1309_128X64_NONAME0_8080 : public U8X8 { public: U8X8_SSD1309_128X64_NONAME0_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname0, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1309_128X64_NONAME0_SW_I2C : public U8X8 { public: U8X8_SSD1309_128X64_NONAME0_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname0, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1309_128X64_NONAME0_HW_I2C : public U8X8 { public: U8X8_SSD1309_128X64_NONAME0_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname0, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1309_128X64_NONAME0_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1309_128X64_NONAME0_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1309_128x64_noname0, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1316_128X32_4W_SW_SPI : public U8X8 { public: U8X8_SSD1316_128X32_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1316_128x32, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1316_128X32_4W_HW_SPI : public U8X8 { public: U8X8_SSD1316_128X32_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1316_128x32, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1316_128X32_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1316_128X32_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1316_128x32, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1316_128X32_6800 : public U8X8 { public: U8X8_SSD1316_128X32_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1316_128x32, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1316_128X32_8080 : public U8X8 { public: U8X8_SSD1316_128X32_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1316_128x32, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1316_128X32_SW_I2C : public U8X8 { public: U8X8_SSD1316_128X32_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1316_128x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1316_128X32_HW_I2C : public U8X8 { public: U8X8_SSD1316_128X32_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1316_128x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1316_128X32_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1316_128X32_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1316_128x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1317_96X96_4W_SW_SPI : public U8X8 { public: U8X8_SSD1317_96X96_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1317_96x96, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1317_96X96_4W_HW_SPI : public U8X8 { public: U8X8_SSD1317_96X96_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1317_96x96, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1317_96X96_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1317_96X96_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1317_96x96, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1317_96X96_6800 : public U8X8 { public: U8X8_SSD1317_96X96_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1317_96x96, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1317_96X96_8080 : public U8X8 { public: U8X8_SSD1317_96X96_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1317_96x96, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1317_96X96_SW_I2C : public U8X8 { public: U8X8_SSD1317_96X96_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1317_96x96, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1317_96X96_HW_I2C : public U8X8 { public: U8X8_SSD1317_96X96_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1317_96x96, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1317_96X96_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1317_96X96_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1317_96x96, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1318_128X96_4W_SW_SPI : public U8X8 { public: U8X8_SSD1318_128X96_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1318_128X96_4W_HW_SPI : public U8X8 { public: U8X8_SSD1318_128X96_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1318_128X96_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1318_128X96_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1318_128X96_3W_SW_SPI : public U8X8 { public: U8X8_SSD1318_128X96_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1318_128X96_3W_HW_SPI : public U8X8 { public: U8X8_SSD1318_128X96_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1318_128X96_6800 : public U8X8 { public: U8X8_SSD1318_128X96_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1318_128X96_8080 : public U8X8 { public: U8X8_SSD1318_128X96_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1318_128X96_XCP_4W_SW_SPI : public U8X8 { public: U8X8_SSD1318_128X96_XCP_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96_xcp, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1318_128X96_XCP_4W_HW_SPI : public U8X8 { public: U8X8_SSD1318_128X96_XCP_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96_xcp, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1318_128X96_XCP_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1318_128X96_XCP_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96_xcp, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1318_128X96_XCP_3W_SW_SPI : public U8X8 { public: U8X8_SSD1318_128X96_XCP_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96_xcp, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1318_128X96_XCP_3W_HW_SPI : public U8X8 { public: U8X8_SSD1318_128X96_XCP_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96_xcp, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1318_128X96_XCP_6800 : public U8X8 { public: U8X8_SSD1318_128X96_XCP_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96_xcp, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1318_128X96_XCP_8080 : public U8X8 { public: U8X8_SSD1318_128X96_XCP_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96_xcp, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1318_128X96_SW_I2C : public U8X8 { public: U8X8_SSD1318_128X96_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1318_128X96_HW_I2C : public U8X8 { public: U8X8_SSD1318_128X96_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1318_128X96_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1318_128X96_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1318_128X96_XCP_SW_I2C : public U8X8 { public: U8X8_SSD1318_128X96_XCP_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96_xcp, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1318_128X96_XCP_HW_I2C : public U8X8 { public: U8X8_SSD1318_128X96_XCP_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96_xcp, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1318_128X96_XCP_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1318_128X96_XCP_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1318_128x96_xcp, u8x8_cad_ssd13xx_fast_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1325_NHD_128X64_4W_SW_SPI : public U8X8 { public: U8X8_SSD1325_NHD_128X64_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1325_nhd_128x64, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1325_NHD_128X64_4W_HW_SPI : public U8X8 { public: U8X8_SSD1325_NHD_128X64_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1325_nhd_128x64, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1325_NHD_128X64_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1325_NHD_128X64_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1325_nhd_128x64, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1325_NHD_128X64_3W_SW_SPI : public U8X8 { public: U8X8_SSD1325_NHD_128X64_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1325_nhd_128x64, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1325_NHD_128X64_3W_HW_SPI : public U8X8 { public: U8X8_SSD1325_NHD_128X64_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1325_nhd_128x64, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1325_NHD_128X64_6800 : public U8X8 { public: U8X8_SSD1325_NHD_128X64_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1325_nhd_128x64, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1325_NHD_128X64_8080 : public U8X8 { public: U8X8_SSD1325_NHD_128X64_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1325_nhd_128x64, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1325_NHD_128X64_SW_I2C : public U8X8 { public: U8X8_SSD1325_NHD_128X64_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1325_nhd_128x64, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1325_NHD_128X64_HW_I2C : public U8X8 { public: U8X8_SSD1325_NHD_128X64_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1325_nhd_128x64, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1325_NHD_128X64_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1325_NHD_128X64_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1325_nhd_128x64, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD0323_OS128064_4W_SW_SPI : public U8X8 { public: U8X8_SSD0323_OS128064_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd0323_os128064, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD0323_OS128064_4W_HW_SPI : public U8X8 { public: U8X8_SSD0323_OS128064_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd0323_os128064, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD0323_OS128064_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD0323_OS128064_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd0323_os128064, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD0323_OS128064_3W_SW_SPI : public U8X8 { public: U8X8_SSD0323_OS128064_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd0323_os128064, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD0323_OS128064_3W_HW_SPI : public U8X8 { public: U8X8_SSD0323_OS128064_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd0323_os128064, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD0323_OS128064_6800 : public U8X8 { public: U8X8_SSD0323_OS128064_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd0323_os128064, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD0323_OS128064_8080 : public U8X8 { public: U8X8_SSD0323_OS128064_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd0323_os128064, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD0323_OS128064_SW_I2C : public U8X8 { public: U8X8_SSD0323_OS128064_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd0323_os128064, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD0323_OS128064_HW_I2C : public U8X8 { public: U8X8_SSD0323_OS128064_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd0323_os128064, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD0323_OS128064_2ND_HW_I2C : public U8X8 { public: U8X8_SSD0323_OS128064_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd0323_os128064, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1326_ER_256X32_4W_SW_SPI : public U8X8 { public: U8X8_SSD1326_ER_256X32_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1326_er_256x32, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1326_ER_256X32_4W_HW_SPI : public U8X8 { public: U8X8_SSD1326_ER_256X32_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1326_er_256x32, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1326_ER_256X32_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1326_ER_256X32_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1326_er_256x32, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1326_ER_256X32_3W_SW_SPI : public U8X8 { public: U8X8_SSD1326_ER_256X32_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1326_er_256x32, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1326_ER_256X32_3W_HW_SPI : public U8X8 { public: U8X8_SSD1326_ER_256X32_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1326_er_256x32, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1326_ER_256X32_6800 : public U8X8 { public: U8X8_SSD1326_ER_256X32_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1326_er_256x32, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1326_ER_256X32_8080 : public U8X8 { public: U8X8_SSD1326_ER_256X32_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1326_er_256x32, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1326_ER_256X32_SW_I2C : public U8X8 { public: U8X8_SSD1326_ER_256X32_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1326_er_256x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1326_ER_256X32_HW_I2C : public U8X8 { public: U8X8_SSD1326_ER_256X32_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1326_er_256x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1326_ER_256X32_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1326_ER_256X32_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1326_er_256x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1327_WS_96X64_4W_SW_SPI : public U8X8 { public: U8X8_SSD1327_WS_96X64_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_96x64, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1327_WS_96X64_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_WS_96X64_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_96x64, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_WS_96X64_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_WS_96X64_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_96x64, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_WS_96X64_3W_SW_SPI : public U8X8 { public: U8X8_SSD1327_WS_96X64_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_96x64, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1327_WS_96X64_3W_HW_SPI : public U8X8 { public: U8X8_SSD1327_WS_96X64_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_96x64, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1327_WS_96X64_6800 : public U8X8 { public: U8X8_SSD1327_WS_96X64_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_96x64, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_WS_96X64_8080 : public U8X8 { public: U8X8_SSD1327_WS_96X64_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_96x64, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_WS_96X64_SW_I2C : public U8X8 { public: U8X8_SSD1327_WS_96X64_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_96x64, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1327_WS_96X64_HW_I2C : public U8X8 { public: U8X8_SSD1327_WS_96X64_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_96x64, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1327_WS_96X64_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1327_WS_96X64_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_96x64, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1327_SEEED_96X96_4W_SW_SPI : public U8X8 { public: U8X8_SSD1327_SEEED_96X96_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1327_SEEED_96X96_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_SEEED_96X96_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_SEEED_96X96_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_SEEED_96X96_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_SEEED_96X96_3W_SW_SPI : public U8X8 { public: U8X8_SSD1327_SEEED_96X96_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1327_SEEED_96X96_3W_HW_SPI : public U8X8 { public: U8X8_SSD1327_SEEED_96X96_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1327_SEEED_96X96_6800 : public U8X8 { public: U8X8_SSD1327_SEEED_96X96_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_seeed_96x96, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_SEEED_96X96_8080 : public U8X8 { public: U8X8_SSD1327_SEEED_96X96_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_seeed_96x96, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_SEEED_96X96_SW_I2C : public U8X8 { public: U8X8_SSD1327_SEEED_96X96_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_seeed_96x96, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1327_SEEED_96X96_HW_I2C : public U8X8 { public: U8X8_SSD1327_SEEED_96X96_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_seeed_96x96, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1327_SEEED_96X96_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1327_SEEED_96X96_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_seeed_96x96, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1327_EA_W128128_4W_SW_SPI : public U8X8 { public: U8X8_SSD1327_EA_W128128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ea_w128128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1327_EA_W128128_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_EA_W128128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ea_w128128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_EA_W128128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_EA_W128128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ea_w128128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_EA_W128128_3W_SW_SPI : public U8X8 { public: U8X8_SSD1327_EA_W128128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ea_w128128, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1327_EA_W128128_3W_HW_SPI : public U8X8 { public: U8X8_SSD1327_EA_W128128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ea_w128128, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1327_EA_W128128_6800 : public U8X8 { public: U8X8_SSD1327_EA_W128128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ea_w128128, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_EA_W128128_8080 : public U8X8 { public: U8X8_SSD1327_EA_W128128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ea_w128128, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_MIDAS_128X128_4W_SW_SPI : public U8X8 { public: U8X8_SSD1327_MIDAS_128X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_midas_128x128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1327_MIDAS_128X128_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_MIDAS_128X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_midas_128x128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_MIDAS_128X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_MIDAS_128X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_midas_128x128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_MIDAS_128X128_3W_SW_SPI : public U8X8 { public: U8X8_SSD1327_MIDAS_128X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_midas_128x128, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1327_MIDAS_128X128_3W_HW_SPI : public U8X8 { public: U8X8_SSD1327_MIDAS_128X128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_midas_128x128, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1327_MIDAS_128X128_6800 : public U8X8 { public: U8X8_SSD1327_MIDAS_128X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_midas_128x128, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_MIDAS_128X128_8080 : public U8X8 { public: U8X8_SSD1327_MIDAS_128X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_midas_128x128, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_WS_128X128_4W_SW_SPI : public U8X8 { public: U8X8_SSD1327_WS_128X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_128x128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1327_WS_128X128_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_WS_128X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_128x128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_WS_128X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_WS_128X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_128x128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_WS_128X128_3W_SW_SPI : public U8X8 { public: U8X8_SSD1327_WS_128X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_128x128, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1327_WS_128X128_3W_HW_SPI : public U8X8 { public: U8X8_SSD1327_WS_128X128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_128x128, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1327_WS_128X128_6800 : public U8X8 { public: U8X8_SSD1327_WS_128X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_128x128, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_WS_128X128_8080 : public U8X8 { public: U8X8_SSD1327_WS_128X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_128x128, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_EA_W128128_SW_I2C : public U8X8 { public: U8X8_SSD1327_EA_W128128_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ea_w128128, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1327_EA_W128128_HW_I2C : public U8X8 { public: U8X8_SSD1327_EA_W128128_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ea_w128128, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1327_EA_W128128_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1327_EA_W128128_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ea_w128128, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1327_MIDAS_128X128_SW_I2C : public U8X8 { public: U8X8_SSD1327_MIDAS_128X128_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_midas_128x128, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1327_MIDAS_128X128_HW_I2C : public U8X8 { public: U8X8_SSD1327_MIDAS_128X128_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_midas_128x128, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1327_MIDAS_128X128_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1327_MIDAS_128X128_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_midas_128x128, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1327_WS_128X128_SW_I2C : public U8X8 { public: U8X8_SSD1327_WS_128X128_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_128x128, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1327_WS_128X128_HW_I2C : public U8X8 { public: U8X8_SSD1327_WS_128X128_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_128x128, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1327_WS_128X128_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1327_WS_128X128_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_ws_128x128, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1327_VISIONOX_128X96_4W_SW_SPI : public U8X8 { public: U8X8_SSD1327_VISIONOX_128X96_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_visionox_128x96, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1327_VISIONOX_128X96_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_VISIONOX_128X96_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_visionox_128x96, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_VISIONOX_128X96_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1327_VISIONOX_128X96_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_visionox_128x96, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1327_VISIONOX_128X96_3W_SW_SPI : public U8X8 { public: U8X8_SSD1327_VISIONOX_128X96_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_visionox_128x96, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1327_VISIONOX_128X96_3W_HW_SPI : public U8X8 { public: U8X8_SSD1327_VISIONOX_128X96_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_visionox_128x96, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1327_VISIONOX_128X96_6800 : public U8X8 { public: U8X8_SSD1327_VISIONOX_128X96_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_visionox_128x96, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_VISIONOX_128X96_8080 : public U8X8 { public: U8X8_SSD1327_VISIONOX_128X96_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_visionox_128x96, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1327_VISIONOX_128X96_SW_I2C : public U8X8 { public: U8X8_SSD1327_VISIONOX_128X96_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_visionox_128x96, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_SSD1327_VISIONOX_128X96_HW_I2C : public U8X8 { public: U8X8_SSD1327_VISIONOX_128X96_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_visionox_128x96, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1327_VISIONOX_128X96_2ND_HW_I2C : public U8X8 { public: U8X8_SSD1327_VISIONOX_128X96_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1327_visionox_128x96, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_SSD1329_128X96_NONAME_4W_SW_SPI : public U8X8 { public: U8X8_SSD1329_128X96_NONAME_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1329_128x96_noname, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1329_128X96_NONAME_4W_HW_SPI : public U8X8 { public: U8X8_SSD1329_128X96_NONAME_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1329_128x96_noname, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1329_128X96_NONAME_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1329_128X96_NONAME_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1329_128x96_noname, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1329_128X96_NONAME_6800 : public U8X8 { public: U8X8_SSD1329_128X96_NONAME_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1329_128x96_noname, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1329_128X96_NONAME_8080 : public U8X8 { public: U8X8_SSD1329_128X96_NONAME_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1329_128x96_noname, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; +class U8X8_SSD1362_256X64_RAYSTAR_4W_SW_SPI : public U8X8 { + public: U8X8_SSD1362_256X64_RAYSTAR_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_ssd1362_256x64_raystar, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8X8_SSD1362_256X64_RAYSTAR_4W_HW_SPI : public U8X8 { + public: U8X8_SSD1362_256X64_RAYSTAR_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_ssd1362_256x64_raystar, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8X8_SSD1362_256X64_RAYSTAR_2ND_4W_HW_SPI : public U8X8 { + public: U8X8_SSD1362_256X64_RAYSTAR_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_ssd1362_256x64_raystar, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8X8_SSD1362_256X64_RAYSTAR_3W_SW_SPI : public U8X8 { + public: U8X8_SSD1362_256X64_RAYSTAR_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_ssd1362_256x64_raystar, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; +class U8X8_SSD1362_256X64_RAYSTAR_3W_HW_SPI : public U8X8 { + public: U8X8_SSD1362_256X64_RAYSTAR_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_ssd1362_256x64_raystar, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); + } +}; +class U8X8_SSD1362_256X64_RAYSTAR_6800 : public U8X8 { + public: U8X8_SSD1362_256X64_RAYSTAR_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_ssd1362_256x64_raystar, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8X8_SSD1362_256X64_RAYSTAR_8080 : public U8X8 { + public: U8X8_SSD1362_256X64_RAYSTAR_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_ssd1362_256x64_raystar, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8X8_SSD1362_256X64_RAYSTAR_SW_I2C : public U8X8 { + public: U8X8_SSD1362_256X64_RAYSTAR_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_ssd1362_256x64_raystar, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); + } +}; +class U8X8_SSD1362_256X64_RAYSTAR_HW_I2C : public U8X8 { + public: U8X8_SSD1362_256X64_RAYSTAR_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_ssd1362_256x64_raystar, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); + } +}; +class U8X8_SSD1362_256X64_RAYSTAR_2ND_HW_I2C : public U8X8 { + public: U8X8_SSD1362_256X64_RAYSTAR_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_ssd1362_256x64_raystar, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); + u8x8_SetPin_HW_I2C(getU8x8(), reset); + } +}; class U8X8_LD7032_60X32_4W_SW_SPI : public U8X8 { public: U8X8_LD7032_60X32_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ld7032_60x32, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_LD7032_60X32_4W_HW_SPI : public U8X8 { public: U8X8_LD7032_60X32_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ld7032_60x32, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_LD7032_60X32_2ND_4W_HW_SPI : public U8X8 { public: U8X8_LD7032_60X32_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ld7032_60x32, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_LD7032_60X32_SW_I2C : public U8X8 { public: U8X8_LD7032_60X32_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ld7032_60x32, u8x8_cad_ld7032_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_LD7032_60X32_HW_I2C : public U8X8 { public: U8X8_LD7032_60X32_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ld7032_60x32, u8x8_cad_ld7032_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_LD7032_60X32_2ND_HW_I2C : public U8X8 { public: U8X8_LD7032_60X32_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ld7032_60x32, u8x8_cad_ld7032_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST7920_192X32_8080 : public U8X8 { public: U8X8_ST7920_192X32_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_192x32, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7920_192X32_6800 : public U8X8 { public: U8X8_ST7920_192X32_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_192x32, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7920_192X32_SW_SPI : public U8X8 { public: U8X8_ST7920_192X32_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_192x32, u8x8_cad_st7920_spi, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7920_192X32_HW_SPI : public U8X8 { public: U8X8_ST7920_192X32_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_192x32, u8x8_cad_st7920_spi, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_ST7920_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7920_192X32_2ND_HW_SPI : public U8X8 { public: U8X8_ST7920_192X32_2ND_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_192x32, u8x8_cad_st7920_spi, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_ST7920_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7920_128X64_8080 : public U8X8 { public: U8X8_ST7920_128X64_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_128x64, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7920_128X64_6800 : public U8X8 { public: U8X8_ST7920_128X64_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_128x64, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7920_128X64_SW_SPI : public U8X8 { public: U8X8_ST7920_128X64_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_128x64, u8x8_cad_st7920_spi, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7920_128X64_HW_SPI : public U8X8 { public: U8X8_ST7920_128X64_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_128x64, u8x8_cad_st7920_spi, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_ST7920_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7920_128X64_2ND_HW_SPI : public U8X8 { public: U8X8_ST7920_128X64_2ND_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_128x64, u8x8_cad_st7920_spi, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_ST7920_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_LS013B7DH03_128X128_4W_SW_SPI : public U8X8 { public: U8X8_LS013B7DH03_128X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ls013b7dh03_128x128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_LS013B7DH03_128X128_4W_HW_SPI : public U8X8 { public: U8X8_LS013B7DH03_128X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ls013b7dh03_128x128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_LS013B7DH03_128X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_LS013B7DH03_128X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ls013b7dh03_128x128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_LS027B7DH01_400X240_4W_SW_SPI : public U8X8 { public: U8X8_LS027B7DH01_400X240_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ls027b7dh01_400x240, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_LS027B7DH01_400X240_4W_HW_SPI : public U8X8 { public: U8X8_LS027B7DH01_400X240_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ls027b7dh01_400x240, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_LS027B7DH01_400X240_2ND_4W_HW_SPI : public U8X8 { public: U8X8_LS027B7DH01_400X240_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ls027b7dh01_400x240, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_LS013B7DH05_144X168_4W_SW_SPI : public U8X8 { public: U8X8_LS013B7DH05_144X168_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ls013b7dh05_144x168, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_LS013B7DH05_144X168_4W_HW_SPI : public U8X8 { public: U8X8_LS013B7DH05_144X168_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ls013b7dh05_144x168, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_LS013B7DH05_144X168_2ND_4W_HW_SPI : public U8X8 { public: U8X8_LS013B7DH05_144X168_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ls013b7dh05_144x168, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1701_EA_DOGS102_4W_SW_SPI : public U8X8 { public: U8X8_UC1701_EA_DOGS102_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_ea_dogs102, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1701_EA_DOGS102_4W_HW_SPI : public U8X8 { public: U8X8_UC1701_EA_DOGS102_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_ea_dogs102, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1701_EA_DOGS102_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1701_EA_DOGS102_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_ea_dogs102, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1701_EA_DOGS102_3W_SW_SPI : public U8X8 { public: U8X8_UC1701_EA_DOGS102_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_ea_dogs102, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1701_EA_DOGS102_3W_HW_SPI : public U8X8 { public: U8X8_UC1701_EA_DOGS102_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_ea_dogs102, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1701_EA_DOGS102_6800 : public U8X8 { public: U8X8_UC1701_EA_DOGS102_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_ea_dogs102, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1701_EA_DOGS102_8080 : public U8X8 { public: U8X8_UC1701_EA_DOGS102_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_ea_dogs102, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1701_MINI12864_4W_SW_SPI : public U8X8 { public: U8X8_UC1701_MINI12864_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_mini12864, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1701_MINI12864_4W_HW_SPI : public U8X8 { public: U8X8_UC1701_MINI12864_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_mini12864, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1701_MINI12864_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1701_MINI12864_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_mini12864, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1701_MINI12864_3W_SW_SPI : public U8X8 { public: U8X8_UC1701_MINI12864_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_mini12864, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1701_MINI12864_3W_HW_SPI : public U8X8 { public: U8X8_UC1701_MINI12864_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_mini12864, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1701_MINI12864_6800 : public U8X8 { public: U8X8_UC1701_MINI12864_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_mini12864, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1701_MINI12864_8080 : public U8X8 { public: U8X8_UC1701_MINI12864_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1701_mini12864, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_PCD8544_84X48_4W_SW_SPI : public U8X8 { public: U8X8_PCD8544_84X48_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_pcd8544_84x48, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_PCD8544_84X48_4W_HW_SPI : public U8X8 { public: U8X8_PCD8544_84X48_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_pcd8544_84x48, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_PCD8544_84X48_2ND_4W_HW_SPI : public U8X8 { public: U8X8_PCD8544_84X48_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_pcd8544_84x48, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_PCD8544_84X48_3W_SW_SPI : public U8X8 { public: U8X8_PCD8544_84X48_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_pcd8544_84x48, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_PCD8544_84X48_3W_HW_SPI : public U8X8 { public: U8X8_PCD8544_84X48_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_pcd8544_84x48, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_PCF8812_96X65_4W_SW_SPI : public U8X8 { public: U8X8_PCF8812_96X65_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_pcf8812_96x65, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_PCF8812_96X65_4W_HW_SPI : public U8X8 { public: U8X8_PCF8812_96X65_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_pcf8812_96x65, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_PCF8812_96X65_2ND_4W_HW_SPI : public U8X8 { public: U8X8_PCF8812_96X65_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_pcf8812_96x65, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_PCF8812_96X65_3W_SW_SPI : public U8X8 { public: U8X8_PCF8812_96X65_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_pcf8812_96x65, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_PCF8812_96X65_3W_HW_SPI : public U8X8 { public: U8X8_PCF8812_96X65_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_pcf8812_96x65, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_HX1230_96X68_4W_SW_SPI : public U8X8 { public: U8X8_HX1230_96X68_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_hx1230_96x68, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_HX1230_96X68_4W_HW_SPI : public U8X8 { public: U8X8_HX1230_96X68_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_hx1230_96x68, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_HX1230_96X68_2ND_4W_HW_SPI : public U8X8 { public: U8X8_HX1230_96X68_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_hx1230_96x68, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_HX1230_96X68_3W_SW_SPI : public U8X8 { public: U8X8_HX1230_96X68_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_hx1230_96x68, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_HX1230_96X68_3W_HW_SPI : public U8X8 { public: U8X8_HX1230_96X68_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_hx1230_96x68, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1604_JLX19264_4W_SW_SPI : public U8X8 { public: U8X8_UC1604_JLX19264_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1604_jlx19264, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1604_JLX19264_4W_HW_SPI : public U8X8 { public: U8X8_UC1604_JLX19264_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1604_jlx19264, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1604_JLX19264_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1604_JLX19264_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1604_jlx19264, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1604_JLX19264_3W_SW_SPI : public U8X8 { public: U8X8_UC1604_JLX19264_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1604_jlx19264, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1604_JLX19264_3W_HW_SPI : public U8X8 { public: U8X8_UC1604_JLX19264_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1604_jlx19264, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1604_JLX19264_6800 : public U8X8 { public: U8X8_UC1604_JLX19264_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1604_jlx19264, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1604_JLX19264_8080 : public U8X8 { public: U8X8_UC1604_JLX19264_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1604_jlx19264, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1604_JLX19264_SW_I2C : public U8X8 { public: U8X8_UC1604_JLX19264_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1604_jlx19264, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1604_JLX19264_HW_I2C : public U8X8 { public: U8X8_UC1604_JLX19264_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1604_jlx19264, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1604_JLX19264_2ND_HW_I2C : public U8X8 { public: U8X8_UC1604_JLX19264_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1604_jlx19264, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_UC1608_ERC24064_4W_SW_SPI : public U8X8 { public: U8X8_UC1608_ERC24064_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc24064, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1608_ERC24064_4W_HW_SPI : public U8X8 { public: U8X8_UC1608_ERC24064_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc24064, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1608_ERC24064_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1608_ERC24064_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc24064, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1608_ERC24064_3W_SW_SPI : public U8X8 { public: U8X8_UC1608_ERC24064_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc24064, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1608_ERC24064_3W_HW_SPI : public U8X8 { public: U8X8_UC1608_ERC24064_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc24064, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1608_ERC24064_6800 : public U8X8 { public: U8X8_UC1608_ERC24064_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc24064, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1608_ERC24064_8080 : public U8X8 { public: U8X8_UC1608_ERC24064_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc24064, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1608_DEM240064_4W_SW_SPI : public U8X8 { public: U8X8_UC1608_DEM240064_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_dem240064, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1608_DEM240064_4W_HW_SPI : public U8X8 { public: U8X8_UC1608_DEM240064_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_dem240064, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1608_DEM240064_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1608_DEM240064_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_dem240064, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1608_DEM240064_3W_SW_SPI : public U8X8 { public: U8X8_UC1608_DEM240064_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_dem240064, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1608_DEM240064_3W_HW_SPI : public U8X8 { public: U8X8_UC1608_DEM240064_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_dem240064, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1608_DEM240064_6800 : public U8X8 { public: U8X8_UC1608_DEM240064_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_dem240064, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1608_DEM240064_8080 : public U8X8 { public: U8X8_UC1608_DEM240064_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_dem240064, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1608_ERC24064_SW_I2C : public U8X8 { public: U8X8_UC1608_ERC24064_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc24064, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1608_ERC24064_HW_I2C : public U8X8 { public: U8X8_UC1608_ERC24064_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc24064, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1608_ERC24064_2ND_HW_I2C : public U8X8 { public: U8X8_UC1608_ERC24064_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc24064, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_UC1608_DEM240064_SW_I2C : public U8X8 { public: U8X8_UC1608_DEM240064_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_dem240064, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1608_DEM240064_HW_I2C : public U8X8 { public: U8X8_UC1608_DEM240064_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_dem240064, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1608_DEM240064_2ND_HW_I2C : public U8X8 { public: U8X8_UC1608_DEM240064_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_dem240064, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_UC1608_ERC240120_4W_SW_SPI : public U8X8 { public: U8X8_UC1608_ERC240120_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc240120, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1608_ERC240120_4W_HW_SPI : public U8X8 { public: U8X8_UC1608_ERC240120_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc240120, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1608_ERC240120_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1608_ERC240120_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc240120, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1608_ERC240120_3W_SW_SPI : public U8X8 { public: U8X8_UC1608_ERC240120_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc240120, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1608_ERC240120_3W_HW_SPI : public U8X8 { public: U8X8_UC1608_ERC240120_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc240120, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1608_ERC240120_6800 : public U8X8 { public: U8X8_UC1608_ERC240120_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc240120, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1608_ERC240120_8080 : public U8X8 { public: U8X8_UC1608_ERC240120_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc240120, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1608_ERC240120_SW_I2C : public U8X8 { public: U8X8_UC1608_ERC240120_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc240120, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1608_ERC240120_HW_I2C : public U8X8 { public: U8X8_UC1608_ERC240120_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc240120, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1608_ERC240120_2ND_HW_I2C : public U8X8 { public: U8X8_UC1608_ERC240120_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_erc240120, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_UC1608_240X128_4W_SW_SPI : public U8X8 { public: U8X8_UC1608_240X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_240x128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1608_240X128_4W_HW_SPI : public U8X8 { public: U8X8_UC1608_240X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_240x128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1608_240X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1608_240X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_240x128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1608_240X128_3W_SW_SPI : public U8X8 { public: U8X8_UC1608_240X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_240x128, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1608_240X128_3W_HW_SPI : public U8X8 { public: U8X8_UC1608_240X128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_240x128, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1608_240X128_6800 : public U8X8 { public: U8X8_UC1608_240X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_240x128, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1608_240X128_8080 : public U8X8 { public: U8X8_UC1608_240X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_240x128, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1608_240X128_SW_I2C : public U8X8 { public: U8X8_UC1608_240X128_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_240x128, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1608_240X128_HW_I2C : public U8X8 { public: U8X8_UC1608_240X128_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_240x128, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1608_240X128_2ND_HW_I2C : public U8X8 { public: U8X8_UC1608_240X128_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1608_240x128, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_UC1638_160X128_4W_SW_SPI : public U8X8 { public: U8X8_UC1638_160X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1638_160x128, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1638_160X128_4W_HW_SPI : public U8X8 { public: U8X8_UC1638_160X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1638_160x128, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1638_160X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1638_160X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1638_160x128, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1638_160X128_3W_SW_SPI : public U8X8 { public: U8X8_UC1638_160X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1638_160x128, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1638_160X128_3W_HW_SPI : public U8X8 { public: U8X8_UC1638_160X128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1638_160x128, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1638_160X128_6800 : public U8X8 { public: U8X8_UC1638_160X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1638_160x128, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1638_160X128_8080 : public U8X8 { public: U8X8_UC1638_160X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1638_160x128, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1610_EA_DOGXL160_4W_SW_SPI : public U8X8 { public: U8X8_UC1610_EA_DOGXL160_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1610_ea_dogxl160, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1610_EA_DOGXL160_4W_HW_SPI : public U8X8 { public: U8X8_UC1610_EA_DOGXL160_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1610_ea_dogxl160, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1610_EA_DOGXL160_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1610_EA_DOGXL160_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1610_ea_dogxl160, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1610_EA_DOGXL160_3W_SW_SPI : public U8X8 { public: U8X8_UC1610_EA_DOGXL160_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1610_ea_dogxl160, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1610_EA_DOGXL160_3W_HW_SPI : public U8X8 { public: U8X8_UC1610_EA_DOGXL160_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1610_ea_dogxl160, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1610_EA_DOGXL160_6800 : public U8X8 { public: U8X8_UC1610_EA_DOGXL160_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1610_ea_dogxl160, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1610_EA_DOGXL160_8080 : public U8X8 { public: U8X8_UC1610_EA_DOGXL160_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1610_ea_dogxl160, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1610_EA_DOGXL160_SW_I2C : public U8X8 { public: U8X8_UC1610_EA_DOGXL160_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1610_ea_dogxl160, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1610_EA_DOGXL160_HW_I2C : public U8X8 { public: U8X8_UC1610_EA_DOGXL160_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1610_ea_dogxl160, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1610_EA_DOGXL160_2ND_HW_I2C : public U8X8 { public: U8X8_UC1610_EA_DOGXL160_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1610_ea_dogxl160, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_UC1611_EA_DOGM240_4W_SW_SPI : public U8X8 { public: U8X8_UC1611_EA_DOGM240_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogm240, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1611_EA_DOGM240_4W_HW_SPI : public U8X8 { public: U8X8_UC1611_EA_DOGM240_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogm240, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1611_EA_DOGM240_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1611_EA_DOGM240_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogm240, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1611_EA_DOGM240_3W_SW_SPI : public U8X8 { public: U8X8_UC1611_EA_DOGM240_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogm240, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1611_EA_DOGM240_3W_HW_SPI : public U8X8 { public: U8X8_UC1611_EA_DOGM240_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogm240, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1611_EA_DOGM240_6800 : public U8X8 { public: U8X8_UC1611_EA_DOGM240_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogm240, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1611_EA_DOGM240_8080 : public U8X8 { public: U8X8_UC1611_EA_DOGM240_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogm240, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1611_EA_DOGM240_SW_I2C : public U8X8 { public: U8X8_UC1611_EA_DOGM240_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogm240, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1611_EA_DOGM240_HW_I2C : public U8X8 { public: U8X8_UC1611_EA_DOGM240_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogm240, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1611_EA_DOGM240_2ND_HW_I2C : public U8X8 { public: U8X8_UC1611_EA_DOGM240_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogm240, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_UC1611_EA_DOGXL240_4W_SW_SPI : public U8X8 { public: U8X8_UC1611_EA_DOGXL240_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogxl240, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1611_EA_DOGXL240_4W_HW_SPI : public U8X8 { public: U8X8_UC1611_EA_DOGXL240_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogxl240, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1611_EA_DOGXL240_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1611_EA_DOGXL240_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogxl240, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1611_EA_DOGXL240_3W_SW_SPI : public U8X8 { public: U8X8_UC1611_EA_DOGXL240_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogxl240, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1611_EA_DOGXL240_3W_HW_SPI : public U8X8 { public: U8X8_UC1611_EA_DOGXL240_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogxl240, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1611_EA_DOGXL240_6800 : public U8X8 { public: U8X8_UC1611_EA_DOGXL240_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogxl240, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1611_EA_DOGXL240_8080 : public U8X8 { public: U8X8_UC1611_EA_DOGXL240_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogxl240, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1611_EA_DOGXL240_SW_I2C : public U8X8 { public: U8X8_UC1611_EA_DOGXL240_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogxl240, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1611_EA_DOGXL240_HW_I2C : public U8X8 { public: U8X8_UC1611_EA_DOGXL240_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogxl240, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1611_EA_DOGXL240_2ND_HW_I2C : public U8X8 { public: U8X8_UC1611_EA_DOGXL240_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ea_dogxl240, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_UC1611_EW50850_4W_SW_SPI : public U8X8 { public: U8X8_UC1611_EW50850_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ew50850, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1611_EW50850_4W_HW_SPI : public U8X8 { public: U8X8_UC1611_EW50850_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ew50850, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1611_EW50850_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1611_EW50850_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ew50850, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1611_EW50850_3W_SW_SPI : public U8X8 { public: U8X8_UC1611_EW50850_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ew50850, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1611_EW50850_3W_HW_SPI : public U8X8 { public: U8X8_UC1611_EW50850_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ew50850, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1611_EW50850_6800 : public U8X8 { public: U8X8_UC1611_EW50850_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ew50850, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1611_EW50850_8080 : public U8X8 { public: U8X8_UC1611_EW50850_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ew50850, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1611_EW50850_SW_I2C : public U8X8 { public: U8X8_UC1611_EW50850_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ew50850, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1611_EW50850_HW_I2C : public U8X8 { public: U8X8_UC1611_EW50850_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ew50850, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1611_EW50850_2ND_HW_I2C : public U8X8 { public: U8X8_UC1611_EW50850_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_ew50850, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_UC1611_CG160160_4W_SW_SPI : public U8X8 { public: U8X8_UC1611_CG160160_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_cg160160, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1611_CG160160_4W_HW_SPI : public U8X8 { public: U8X8_UC1611_CG160160_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_cg160160, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1611_CG160160_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1611_CG160160_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_cg160160, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1611_CG160160_3W_SW_SPI : public U8X8 { public: U8X8_UC1611_CG160160_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_cg160160, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1611_CG160160_3W_HW_SPI : public U8X8 { public: U8X8_UC1611_CG160160_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_cg160160, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1611_CG160160_6800 : public U8X8 { public: U8X8_UC1611_CG160160_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_cg160160, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1611_CG160160_8080 : public U8X8 { public: U8X8_UC1611_CG160160_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_cg160160, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1611_CG160160_SW_I2C : public U8X8 { public: U8X8_UC1611_CG160160_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_cg160160, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1611_CG160160_HW_I2C : public U8X8 { public: U8X8_UC1611_CG160160_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_cg160160, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1611_CG160160_2ND_HW_I2C : public U8X8 { public: U8X8_UC1611_CG160160_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1611_cg160160, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST7511_AVD_320X240_4W_SW_SPI : public U8X8 { public: U8X8_ST7511_AVD_320X240_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7511_avd_320x240, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7511_AVD_320X240_4W_HW_SPI : public U8X8 { public: U8X8_ST7511_AVD_320X240_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7511_avd_320x240, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7511_AVD_320X240_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7511_AVD_320X240_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7511_avd_320x240, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7511_AVD_320X240_3W_SW_SPI : public U8X8 { public: U8X8_ST7511_AVD_320X240_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7511_avd_320x240, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7511_AVD_320X240_3W_HW_SPI : public U8X8 { public: U8X8_ST7511_AVD_320X240_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7511_avd_320x240, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7511_AVD_320X240_6800 : public U8X8 { public: U8X8_ST7511_AVD_320X240_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7511_avd_320x240, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7511_AVD_320X240_8080 : public U8X8 { public: U8X8_ST7511_AVD_320X240_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7511_avd_320x240, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7528_NHD_C160100_4W_SW_SPI : public U8X8 { public: U8X8_ST7528_NHD_C160100_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_nhd_c160100, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7528_NHD_C160100_4W_HW_SPI : public U8X8 { public: U8X8_ST7528_NHD_C160100_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_nhd_c160100, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7528_NHD_C160100_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7528_NHD_C160100_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_nhd_c160100, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7528_NHD_C160100_6800 : public U8X8 { public: U8X8_ST7528_NHD_C160100_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_nhd_c160100, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7528_NHD_C160100_8080 : public U8X8 { public: U8X8_ST7528_NHD_C160100_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_nhd_c160100, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7528_NHD_C160100_SW_I2C : public U8X8 { public: U8X8_ST7528_NHD_C160100_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_nhd_c160100, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST7528_NHD_C160100_HW_I2C : public U8X8 { public: U8X8_ST7528_NHD_C160100_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_nhd_c160100, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST7528_NHD_C160100_2ND_HW_I2C : public U8X8 { public: U8X8_ST7528_NHD_C160100_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_nhd_c160100, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST7528_ERC16064_4W_SW_SPI : public U8X8 { public: U8X8_ST7528_ERC16064_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_erc16064, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7528_ERC16064_4W_HW_SPI : public U8X8 { public: U8X8_ST7528_ERC16064_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_erc16064, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7528_ERC16064_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7528_ERC16064_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_erc16064, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7528_ERC16064_6800 : public U8X8 { public: U8X8_ST7528_ERC16064_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_erc16064, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7528_ERC16064_8080 : public U8X8 { public: U8X8_ST7528_ERC16064_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_erc16064, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7528_ERC16064_SW_I2C : public U8X8 { public: U8X8_ST7528_ERC16064_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_erc16064, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST7528_ERC16064_HW_I2C : public U8X8 { public: U8X8_ST7528_ERC16064_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_erc16064, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST7528_ERC16064_2ND_HW_I2C : public U8X8 { public: U8X8_ST7528_ERC16064_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7528_erc16064, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_UC1617_JLX128128_4W_SW_SPI : public U8X8 { public: U8X8_UC1617_JLX128128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1617_jlx128128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1617_JLX128128_4W_HW_SPI : public U8X8 { public: U8X8_UC1617_JLX128128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1617_jlx128128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1617_JLX128128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1617_JLX128128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1617_jlx128128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1617_JLX128128_3W_SW_SPI : public U8X8 { public: U8X8_UC1617_JLX128128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1617_jlx128128, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1617_JLX128128_3W_HW_SPI : public U8X8 { public: U8X8_UC1617_JLX128128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1617_jlx128128, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1617_JLX128128_SW_I2C : public U8X8 { public: U8X8_UC1617_JLX128128_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1617_jlx128128, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1617_JLX128128_HW_I2C : public U8X8 { public: U8X8_UC1617_JLX128128_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1617_jlx128128, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1617_JLX128128_2ND_HW_I2C : public U8X8 { public: U8X8_UC1617_JLX128128_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1617_jlx128128, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST7565_EA_DOGM128_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_EA_DOGM128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_EA_DOGM128_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_EA_DOGM128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_EA_DOGM128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_EA_DOGM128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_EA_DOGM128_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_EA_DOGM128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm128, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_EA_DOGM128_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_EA_DOGM128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm128, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_EA_DOGM128_6800 : public U8X8 { public: U8X8_ST7565_EA_DOGM128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm128, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_EA_DOGM128_8080 : public U8X8 { public: U8X8_ST7565_EA_DOGM128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm128, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_LM6063_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_LM6063_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6063, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_LM6063_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_LM6063_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6063, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_LM6063_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_LM6063_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6063, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_LM6063_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_LM6063_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6063, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_LM6063_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_LM6063_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6063, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_LM6063_6800 : public U8X8 { public: U8X8_ST7565_LM6063_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6063, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_LM6063_8080 : public U8X8 { public: U8X8_ST7565_LM6063_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6063, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_64128N_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_64128N_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_64128n, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_64128N_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_64128N_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_64128n, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_64128N_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_64128N_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_64128n, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_64128N_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_64128N_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_64128n, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_64128N_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_64128N_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_64128n, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_64128N_6800 : public U8X8 { public: U8X8_ST7565_64128N_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_64128n, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_64128N_8080 : public U8X8 { public: U8X8_ST7565_64128N_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_64128n, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_ZOLEN_128X64_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_ZOLEN_128X64_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_zolen_128x64, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_ZOLEN_128X64_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_ZOLEN_128X64_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_zolen_128x64, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_ZOLEN_128X64_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_ZOLEN_128X64_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_zolen_128x64, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_ZOLEN_128X64_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_ZOLEN_128X64_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_zolen_128x64, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_ZOLEN_128X64_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_ZOLEN_128X64_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_zolen_128x64, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_ZOLEN_128X64_6800 : public U8X8 { public: U8X8_ST7565_ZOLEN_128X64_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_zolen_128x64, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_ZOLEN_128X64_8080 : public U8X8 { public: U8X8_ST7565_ZOLEN_128X64_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_zolen_128x64, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_LM6059_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_LM6059_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6059, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_LM6059_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_LM6059_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6059, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_LM6059_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_LM6059_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6059, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_LM6059_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_LM6059_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6059, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_LM6059_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_LM6059_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6059, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_LM6059_6800 : public U8X8 { public: U8X8_ST7565_LM6059_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6059, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_LM6059_8080 : public U8X8 { public: U8X8_ST7565_LM6059_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lm6059, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_KS0713_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_KS0713_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ks0713, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_KS0713_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_KS0713_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ks0713, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_KS0713_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_KS0713_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ks0713, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_KS0713_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_KS0713_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ks0713, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_KS0713_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_KS0713_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ks0713, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_KS0713_6800 : public U8X8 { public: U8X8_ST7565_KS0713_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ks0713, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_KS0713_8080 : public U8X8 { public: U8X8_ST7565_KS0713_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ks0713, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_LX12864_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_LX12864_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lx12864, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_LX12864_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_LX12864_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lx12864, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_LX12864_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_LX12864_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lx12864, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_LX12864_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_LX12864_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lx12864, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_LX12864_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_LX12864_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lx12864, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_LX12864_6800 : public U8X8 { public: U8X8_ST7565_LX12864_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lx12864, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_LX12864_8080 : public U8X8 { public: U8X8_ST7565_LX12864_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_lx12864, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_ERC12864_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_ERC12864_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_ERC12864_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_ERC12864_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_ERC12864_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_ERC12864_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_ERC12864_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_ERC12864_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_ERC12864_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_ERC12864_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_ERC12864_6800 : public U8X8 { public: U8X8_ST7565_ERC12864_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_ERC12864_8080 : public U8X8 { public: U8X8_ST7565_ERC12864_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_ERC12864_ALT_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_ERC12864_ALT_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864_alt, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_ERC12864_ALT_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_ERC12864_ALT_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864_alt, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_ERC12864_ALT_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_ERC12864_ALT_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864_alt, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_ERC12864_ALT_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_ERC12864_ALT_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864_alt, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_ERC12864_ALT_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_ERC12864_ALT_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864_alt, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_ERC12864_ALT_6800 : public U8X8 { public: U8X8_ST7565_ERC12864_ALT_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864_alt, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_ERC12864_ALT_8080 : public U8X8 { public: U8X8_ST7565_ERC12864_ALT_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_erc12864_alt, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_NHD_C12864_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_NHD_C12864_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12864, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_NHD_C12864_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_NHD_C12864_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12864, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_NHD_C12864_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_NHD_C12864_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12864, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_NHD_C12864_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_NHD_C12864_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12864, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_NHD_C12864_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_NHD_C12864_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12864, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_NHD_C12864_6800 : public U8X8 { public: U8X8_ST7565_NHD_C12864_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12864, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_NHD_C12864_8080 : public U8X8 { public: U8X8_ST7565_NHD_C12864_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12864, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_JLX12864_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_JLX12864_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_jlx12864, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_JLX12864_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_JLX12864_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_jlx12864, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_JLX12864_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_JLX12864_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_jlx12864, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_JLX12864_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_JLX12864_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_jlx12864, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_JLX12864_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_JLX12864_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_jlx12864, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_JLX12864_6800 : public U8X8 { public: U8X8_ST7565_JLX12864_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_jlx12864, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_JLX12864_8080 : public U8X8 { public: U8X8_ST7565_JLX12864_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_jlx12864, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_NHD_C12832_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_NHD_C12832_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12832, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_NHD_C12832_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_NHD_C12832_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12832, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_NHD_C12832_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_NHD_C12832_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12832, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_NHD_C12832_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_NHD_C12832_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12832, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_NHD_C12832_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_NHD_C12832_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12832, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_NHD_C12832_6800 : public U8X8 { public: U8X8_ST7565_NHD_C12832_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12832, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_NHD_C12832_8080 : public U8X8 { public: U8X8_ST7565_NHD_C12832_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_nhd_c12832, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1601_128X32_4W_SW_SPI : public U8X8 { public: U8X8_UC1601_128X32_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1601_128x32, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_UC1601_128X32_4W_HW_SPI : public U8X8 { public: U8X8_UC1601_128X32_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1601_128x32, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1601_128X32_2ND_4W_HW_SPI : public U8X8 { public: U8X8_UC1601_128X32_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1601_128x32, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_UC1601_128X32_3W_SW_SPI : public U8X8 { public: U8X8_UC1601_128X32_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1601_128x32, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_UC1601_128X32_3W_HW_SPI : public U8X8 { public: U8X8_UC1601_128X32_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1601_128x32, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_UC1601_128X32_6800 : public U8X8 { public: U8X8_UC1601_128X32_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1601_128x32, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1601_128X32_8080 : public U8X8 { public: U8X8_UC1601_128X32_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1601_128x32, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_UC1601_128X32_SW_I2C : public U8X8 { public: U8X8_UC1601_128X32_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1601_128x32, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_UC1601_128X32_HW_I2C : public U8X8 { public: U8X8_UC1601_128X32_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1601_128x32, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1601_128X32_2ND_HW_I2C : public U8X8 { public: U8X8_UC1601_128X32_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_uc1601_128x32, u8x8_cad_uc16xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST7565_EA_DOGM132_4W_SW_SPI : public U8X8 { public: U8X8_ST7565_EA_DOGM132_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm132, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7565_EA_DOGM132_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_EA_DOGM132_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm132, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_EA_DOGM132_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7565_EA_DOGM132_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm132, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7565_EA_DOGM132_3W_SW_SPI : public U8X8 { public: U8X8_ST7565_EA_DOGM132_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm132, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7565_EA_DOGM132_3W_HW_SPI : public U8X8 { public: U8X8_ST7565_EA_DOGM132_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm132, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7565_EA_DOGM132_6800 : public U8X8 { public: U8X8_ST7565_EA_DOGM132_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm132, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7565_EA_DOGM132_8080 : public U8X8 { public: U8X8_ST7565_EA_DOGM132_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7565_ea_dogm132, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_PI_132X64_4W_SW_SPI : public U8X8 { public: U8X8_ST7567_PI_132X64_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_pi_132x64, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7567_PI_132X64_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_PI_132X64_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_pi_132x64, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_PI_132X64_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_PI_132X64_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_pi_132x64, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_PI_132X64_6800 : public U8X8 { public: U8X8_ST7567_PI_132X64_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_pi_132x64, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_PI_132X64_8080 : public U8X8 { public: U8X8_ST7567_PI_132X64_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_pi_132x64, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_JLX12864_4W_SW_SPI : public U8X8 { public: U8X8_ST7567_JLX12864_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_jlx12864, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7567_JLX12864_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_JLX12864_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_jlx12864, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_JLX12864_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_JLX12864_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_jlx12864, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_JLX12864_6800 : public U8X8 { public: U8X8_ST7567_JLX12864_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_jlx12864, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_JLX12864_8080 : public U8X8 { public: U8X8_ST7567_JLX12864_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_jlx12864, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_ENH_DG128064_4W_SW_SPI : public U8X8 { public: U8X8_ST7567_ENH_DG128064_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_enh_dg128064, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7567_ENH_DG128064_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_ENH_DG128064_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_enh_dg128064, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_ENH_DG128064_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_ENH_DG128064_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_enh_dg128064, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_ENH_DG128064_6800 : public U8X8 { public: U8X8_ST7567_ENH_DG128064_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_enh_dg128064, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_ENH_DG128064_8080 : public U8X8 { public: U8X8_ST7567_ENH_DG128064_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_enh_dg128064, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_ENH_DG128064I_4W_SW_SPI : public U8X8 { public: U8X8_ST7567_ENH_DG128064I_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_enh_dg128064i, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7567_ENH_DG128064I_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_ENH_DG128064I_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_enh_dg128064i, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_ENH_DG128064I_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_ENH_DG128064I_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_enh_dg128064i, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_ENH_DG128064I_6800 : public U8X8 { public: U8X8_ST7567_ENH_DG128064I_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_enh_dg128064i, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_ENH_DG128064I_8080 : public U8X8 { public: U8X8_ST7567_ENH_DG128064I_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_enh_dg128064i, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_OS12864_4W_SW_SPI : public U8X8 { public: U8X8_ST7567_OS12864_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_os12864, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7567_OS12864_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_OS12864_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_os12864, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_OS12864_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_OS12864_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_os12864, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_OS12864_6800 : public U8X8 { public: U8X8_ST7567_OS12864_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_os12864, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_OS12864_8080 : public U8X8 { public: U8X8_ST7567_OS12864_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_os12864, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_64X32_4W_SW_SPI : public U8X8 { public: U8X8_ST7567_64X32_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_64x32, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7567_64X32_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_64X32_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_64x32, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_64X32_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_64X32_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_64x32, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_64X32_6800 : public U8X8 { public: U8X8_ST7567_64X32_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_64x32, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_64X32_8080 : public U8X8 { public: U8X8_ST7567_64X32_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_64x32, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_HEM6432_4W_SW_SPI : public U8X8 { public: U8X8_ST7567_HEM6432_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_hem6432, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7567_HEM6432_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_HEM6432_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_hem6432, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_HEM6432_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7567_HEM6432_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_hem6432, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7567_HEM6432_6800 : public U8X8 { public: U8X8_ST7567_HEM6432_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_hem6432, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_HEM6432_8080 : public U8X8 { public: U8X8_ST7567_HEM6432_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_hem6432, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7567_64X32_SW_I2C : public U8X8 { public: U8X8_ST7567_64X32_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_64x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST7567_64X32_HW_I2C : public U8X8 { public: U8X8_ST7567_64X32_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_64x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST7567_64X32_2ND_HW_I2C : public U8X8 { public: U8X8_ST7567_64X32_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_64x32, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST7567_HEM6432_SW_I2C : public U8X8 { public: U8X8_ST7567_HEM6432_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_hem6432, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST7567_HEM6432_HW_I2C : public U8X8 { public: U8X8_ST7567_HEM6432_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_hem6432, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST7567_HEM6432_2ND_HW_I2C : public U8X8 { public: U8X8_ST7567_HEM6432_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7567_hem6432, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST7586S_S028HN118A_4W_SW_SPI : public U8X8 { public: U8X8_ST7586S_S028HN118A_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7586s_s028hn118a, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7586S_S028HN118A_4W_HW_SPI : public U8X8 { public: U8X8_ST7586S_S028HN118A_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7586s_s028hn118a, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7586S_S028HN118A_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7586S_S028HN118A_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7586s_s028hn118a, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7586S_ERC240160_4W_SW_SPI : public U8X8 { public: U8X8_ST7586S_ERC240160_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7586s_erc240160, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7586S_ERC240160_4W_HW_SPI : public U8X8 { public: U8X8_ST7586S_ERC240160_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7586s_erc240160, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7586S_ERC240160_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7586S_ERC240160_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7586s_erc240160, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7586S_ERC240160_3W_SW_SPI : public U8X8 { public: U8X8_ST7586S_ERC240160_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7586s_erc240160, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7586S_ERC240160_3W_HW_SPI : public U8X8 { public: U8X8_ST7586S_ERC240160_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7586s_erc240160, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7586S_ERC240160_6800 : public U8X8 { public: U8X8_ST7586S_ERC240160_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7586s_erc240160, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7586S_ERC240160_8080 : public U8X8 { public: U8X8_ST7586S_ERC240160_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7586s_erc240160, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7588_JLX12864_4W_SW_SPI : public U8X8 { public: U8X8_ST7588_JLX12864_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7588_jlx12864, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST7588_JLX12864_4W_HW_SPI : public U8X8 { public: U8X8_ST7588_JLX12864_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7588_jlx12864, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7588_JLX12864_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST7588_JLX12864_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7588_jlx12864, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST7588_JLX12864_3W_SW_SPI : public U8X8 { public: U8X8_ST7588_JLX12864_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7588_jlx12864, u8x8_cad_001, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST7588_JLX12864_3W_HW_SPI : public U8X8 { public: U8X8_ST7588_JLX12864_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7588_jlx12864, u8x8_cad_001, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST7588_JLX12864_6800 : public U8X8 { public: U8X8_ST7588_JLX12864_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7588_jlx12864, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7588_JLX12864_8080 : public U8X8 { public: U8X8_ST7588_JLX12864_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7588_jlx12864, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST7588_JLX12864_SW_I2C : public U8X8 { public: U8X8_ST7588_JLX12864_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7588_jlx12864, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST7588_JLX12864_HW_I2C : public U8X8 { public: U8X8_ST7588_JLX12864_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7588_jlx12864, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST7588_JLX12864_2ND_HW_I2C : public U8X8 { public: U8X8_ST7588_JLX12864_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7588_jlx12864, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST75256_JLX256128_4W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX256128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256128, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST75256_JLX256128_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256128, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX256128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256128, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX256128_3W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX256128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256128, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST75256_JLX256128_3W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256128, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST75256_JLX256128_6800 : public U8X8 { public: U8X8_ST75256_JLX256128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256128, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX256128_8080 : public U8X8 { public: U8X8_ST75256_JLX256128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256128, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_WO256X128_4W_SW_SPI : public U8X8 { public: U8X8_ST75256_WO256X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_wo256x128, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST75256_WO256X128_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_WO256X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_wo256x128, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_WO256X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_WO256X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_wo256x128, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_WO256X128_3W_SW_SPI : public U8X8 { public: U8X8_ST75256_WO256X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_wo256x128, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST75256_WO256X128_3W_HW_SPI : public U8X8 { public: U8X8_ST75256_WO256X128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_wo256x128, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST75256_WO256X128_6800 : public U8X8 { public: U8X8_ST75256_WO256X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_wo256x128, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_WO256X128_8080 : public U8X8 { public: U8X8_ST75256_WO256X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_wo256x128, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX256128_SW_I2C : public U8X8 { public: U8X8_ST75256_JLX256128_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256128, u8x8_cad_st75256_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST75256_JLX256128_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX256128_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256128, u8x8_cad_st75256_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST75256_JLX256128_2ND_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX256128_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256128, u8x8_cad_st75256_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST75256_WO256X128_SW_I2C : public U8X8 { public: U8X8_ST75256_WO256X128_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_wo256x128, u8x8_cad_st75256_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST75256_WO256X128_HW_I2C : public U8X8 { public: U8X8_ST75256_WO256X128_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_wo256x128, u8x8_cad_st75256_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST75256_WO256X128_2ND_HW_I2C : public U8X8 { public: U8X8_ST75256_WO256X128_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_wo256x128, u8x8_cad_st75256_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST75256_JLX256160_4W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST75256_JLX256160_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX256160_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX256160_3W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST75256_JLX256160_3W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST75256_JLX256160_6800 : public U8X8 { public: U8X8_ST75256_JLX256160_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX256160_8080 : public U8X8 { public: U8X8_ST75256_JLX256160_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX256160M_4W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160M_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160m, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST75256_JLX256160M_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160M_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160m, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX256160M_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160M_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160m, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX256160M_3W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160M_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160m, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST75256_JLX256160M_3W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160M_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160m, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST75256_JLX256160M_6800 : public U8X8 { public: U8X8_ST75256_JLX256160M_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160m, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX256160M_8080 : public U8X8 { public: U8X8_ST75256_JLX256160M_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160m, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX256160_ALT_4W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160_ALT_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160_alt, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST75256_JLX256160_ALT_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160_ALT_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160_alt, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX256160_ALT_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160_ALT_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160_alt, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX256160_ALT_3W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160_ALT_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160_alt, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST75256_JLX256160_ALT_3W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX256160_ALT_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160_alt, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST75256_JLX256160_ALT_6800 : public U8X8 { public: U8X8_ST75256_JLX256160_ALT_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160_alt, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX256160_ALT_8080 : public U8X8 { public: U8X8_ST75256_JLX256160_ALT_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160_alt, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX256160_SW_I2C : public U8X8 { public: U8X8_ST75256_JLX256160_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160, u8x8_cad_st75256_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST75256_JLX256160_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX256160_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160, u8x8_cad_st75256_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST75256_JLX256160_2ND_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX256160_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160, u8x8_cad_st75256_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST75256_JLX256160M_SW_I2C : public U8X8 { public: U8X8_ST75256_JLX256160M_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160m, u8x8_cad_st75256_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST75256_JLX256160M_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX256160M_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160m, u8x8_cad_st75256_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST75256_JLX256160M_2ND_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX256160M_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160m, u8x8_cad_st75256_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST75256_JLX256160_ALT_SW_I2C : public U8X8 { public: U8X8_ST75256_JLX256160_ALT_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160_alt, u8x8_cad_st75256_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST75256_JLX256160_ALT_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX256160_ALT_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160_alt, u8x8_cad_st75256_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST75256_JLX256160_ALT_2ND_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX256160_ALT_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx256160_alt, u8x8_cad_st75256_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST75256_JLX240160_4W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX240160_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx240160, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST75256_JLX240160_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX240160_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx240160, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX240160_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX240160_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx240160, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX240160_3W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX240160_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx240160, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST75256_JLX240160_3W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX240160_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx240160, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST75256_JLX240160_6800 : public U8X8 { public: U8X8_ST75256_JLX240160_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx240160, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX240160_8080 : public U8X8 { public: U8X8_ST75256_JLX240160_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx240160, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX240160_SW_I2C : public U8X8 { public: U8X8_ST75256_JLX240160_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx240160, u8x8_cad_st75256_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST75256_JLX240160_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX240160_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx240160, u8x8_cad_st75256_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST75256_JLX240160_2ND_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX240160_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx240160, u8x8_cad_st75256_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST75256_JLX25664_4W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX25664_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx25664, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST75256_JLX25664_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX25664_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx25664, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX25664_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX25664_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx25664, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX25664_3W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX25664_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx25664, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST75256_JLX25664_3W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX25664_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx25664, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST75256_JLX25664_6800 : public U8X8 { public: U8X8_ST75256_JLX25664_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx25664, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX25664_8080 : public U8X8 { public: U8X8_ST75256_JLX25664_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx25664, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX25664_SW_I2C : public U8X8 { public: U8X8_ST75256_JLX25664_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx25664, u8x8_cad_st75256_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST75256_JLX25664_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX25664_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx25664, u8x8_cad_st75256_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST75256_JLX25664_2ND_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX25664_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx25664, u8x8_cad_st75256_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST75256_JLX172104_4W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX172104_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx172104, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST75256_JLX172104_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX172104_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx172104, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX172104_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX172104_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx172104, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX172104_3W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX172104_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx172104, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST75256_JLX172104_3W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX172104_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx172104, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST75256_JLX172104_6800 : public U8X8 { public: U8X8_ST75256_JLX172104_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx172104, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX172104_8080 : public U8X8 { public: U8X8_ST75256_JLX172104_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx172104, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX172104_SW_I2C : public U8X8 { public: U8X8_ST75256_JLX172104_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx172104, u8x8_cad_st75256_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST75256_JLX172104_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX172104_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx172104, u8x8_cad_st75256_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST75256_JLX172104_2ND_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX172104_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx172104, u8x8_cad_st75256_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST75256_JLX19296_4W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX19296_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx19296, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST75256_JLX19296_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX19296_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx19296, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX19296_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX19296_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx19296, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75256_JLX19296_3W_SW_SPI : public U8X8 { public: U8X8_ST75256_JLX19296_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx19296, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST75256_JLX19296_3W_HW_SPI : public U8X8 { public: U8X8_ST75256_JLX19296_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx19296, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST75256_JLX19296_6800 : public U8X8 { public: U8X8_ST75256_JLX19296_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx19296, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX19296_8080 : public U8X8 { public: U8X8_ST75256_JLX19296_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx19296, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75256_JLX19296_SW_I2C : public U8X8 { public: U8X8_ST75256_JLX19296_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx19296, u8x8_cad_st75256_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST75256_JLX19296_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX19296_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx19296, u8x8_cad_st75256_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST75256_JLX19296_2ND_HW_I2C : public U8X8 { public: U8X8_ST75256_JLX19296_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75256_jlx19296, u8x8_cad_st75256_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_ST75320_JLX320240_4W_SW_SPI : public U8X8 { public: U8X8_ST75320_JLX320240_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75320_jlx320240, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_ST75320_JLX320240_4W_HW_SPI : public U8X8 { public: U8X8_ST75320_JLX320240_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75320_jlx320240, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75320_JLX320240_2ND_4W_HW_SPI : public U8X8 { public: U8X8_ST75320_JLX320240_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75320_jlx320240, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_ST75320_JLX320240_3W_SW_SPI : public U8X8 { public: U8X8_ST75320_JLX320240_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75320_jlx320240, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_ST75320_JLX320240_3W_HW_SPI : public U8X8 { public: U8X8_ST75320_JLX320240_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75320_jlx320240, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_ST75320_JLX320240_6800 : public U8X8 { public: U8X8_ST75320_JLX320240_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75320_jlx320240, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75320_JLX320240_8080 : public U8X8 { public: U8X8_ST75320_JLX320240_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75320_jlx320240, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_ST75320_JLX320240_SW_I2C : public U8X8 { public: U8X8_ST75320_JLX320240_SW_I2C(uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75320_jlx320240, u8x8_cad_st75256_i2c, u8x8_byte_arduino_sw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset); } }; class U8X8_ST75320_JLX320240_HW_I2C : public U8X8 { public: U8X8_ST75320_JLX320240_HW_I2C(uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75320_jlx320240, u8x8_cad_st75256_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST75320_JLX320240_2ND_HW_I2C : public U8X8 { public: U8X8_ST75320_JLX320240_2ND_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st75320_jlx320240, u8x8_cad_st75256_i2c, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_HW_I2C(getU8x8(), reset); } }; class U8X8_NT7534_TG12864R_4W_SW_SPI : public U8X8 { public: U8X8_NT7534_TG12864R_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_nt7534_tg12864r, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_NT7534_TG12864R_4W_HW_SPI : public U8X8 { public: U8X8_NT7534_TG12864R_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_nt7534_tg12864r, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_NT7534_TG12864R_2ND_4W_HW_SPI : public U8X8 { public: U8X8_NT7534_TG12864R_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_nt7534_tg12864r, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_NT7534_TG12864R_6800 : public U8X8 { public: U8X8_NT7534_TG12864R_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_nt7534_tg12864r, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_NT7534_TG12864R_8080 : public U8X8 { public: U8X8_NT7534_TG12864R_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_nt7534_tg12864r, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_IST3020_ERC19264_4W_SW_SPI : public U8X8 { public: U8X8_IST3020_ERC19264_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ist3020_erc19264, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_IST3020_ERC19264_4W_HW_SPI : public U8X8 { public: U8X8_IST3020_ERC19264_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ist3020_erc19264, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_IST3020_ERC19264_2ND_4W_HW_SPI : public U8X8 { public: U8X8_IST3020_ERC19264_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ist3020_erc19264, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_IST3020_ERC19264_6800 : public U8X8 { public: U8X8_IST3020_ERC19264_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ist3020_erc19264, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_IST3020_ERC19264_8080 : public U8X8 { public: U8X8_IST3020_ERC19264_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ist3020_erc19264, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_IST7920_128X128_4W_SW_SPI : public U8X8 { public: U8X8_IST7920_128X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ist7920_128x128, u8x8_cad_001, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_IST7920_128X128_4W_HW_SPI : public U8X8 { public: U8X8_IST7920_128X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ist7920_128x128, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_IST7920_128X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_IST7920_128X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ist7920_128x128, u8x8_cad_001, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_IST7920_128X128_6800 : public U8X8 { public: U8X8_IST7920_128X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ist7920_128x128, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_IST7920_128X128_8080 : public U8X8 { public: U8X8_IST7920_128X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ist7920_128x128, u8x8_cad_001, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SBN1661_122X32 : public U8X8 { public: U8X8_SBN1661_122X32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t dc, uint8_t e1, uint8_t e2, uint8_t reset) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sbn1661_122x32, u8x8_cad_001, u8x8_byte_sed1520, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SED1520(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, dc, e1, e2, reset); } }; class U8X8_SED1520_122X32 : public U8X8 { public: U8X8_SED1520_122X32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t dc, uint8_t e1, uint8_t e2, uint8_t reset) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sed1520_122x32, u8x8_cad_001, u8x8_byte_sed1520, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_SED1520(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, dc, e1, e2, reset); } }; class U8X8_KS0108_128X64 : public U8X8 { public: U8X8_KS0108_128X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t dc, uint8_t cs0, uint8_t cs1, uint8_t cs2, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ks0108_128x64, u8x8_cad_001, u8x8_byte_arduino_ks0108, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_KS0108(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, dc, cs0, cs1, cs2, reset); } }; class U8X8_KS0108_ERM19264 : public U8X8 { public: U8X8_KS0108_ERM19264(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t dc, uint8_t cs0, uint8_t cs1, uint8_t cs2, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ks0108_erm19264, u8x8_cad_001, u8x8_byte_arduino_ks0108, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_KS0108(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, dc, cs0, cs1, cs2, reset); } }; class U8X8_LC7981_160X80_6800 : public U8X8 { public: U8X8_LC7981_160X80_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_lc7981_160x80, u8x8_cad_100, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_LC7981_160X160_6800 : public U8X8 { public: U8X8_LC7981_160X160_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_lc7981_160x160, u8x8_cad_100, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_LC7981_240X128_6800 : public U8X8 { public: U8X8_LC7981_240X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_lc7981_240x128, u8x8_cad_100, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_LC7981_240X64_6800 : public U8X8 { public: U8X8_LC7981_240X64_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_lc7981_240x64, u8x8_cad_100, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_T6963_240X128_8080 : public U8X8 { public: U8X8_T6963_240X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_t6963_240x128, u8x8_cad_100, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_T6963_240X64_8080 : public U8X8 { public: U8X8_T6963_240X64_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_t6963_240x64, u8x8_cad_100, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_T6963_256X64_8080 : public U8X8 { public: U8X8_T6963_256X64_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_t6963_256x64, u8x8_cad_100, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_T6963_128X64_8080 : public U8X8 { public: U8X8_T6963_128X64_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_t6963_128x64, u8x8_cad_100, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_T6963_128X64_ALT_8080 : public U8X8 { public: U8X8_T6963_128X64_ALT_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_t6963_128x64_alt, u8x8_cad_100, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_T6963_160X80_8080 : public U8X8 { public: U8X8_T6963_160X80_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_t6963_160x80, u8x8_cad_100, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1322_NHD_256X64_4W_SW_SPI : public U8X8 { public: U8X8_SSD1322_NHD_256X64_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_256x64, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1322_NHD_256X64_4W_HW_SPI : public U8X8 { public: U8X8_SSD1322_NHD_256X64_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_256x64, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1322_NHD_256X64_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1322_NHD_256X64_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_256x64, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1322_NHD_256X64_3W_SW_SPI : public U8X8 { public: U8X8_SSD1322_NHD_256X64_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_256x64, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1322_NHD_256X64_3W_HW_SPI : public U8X8 { public: U8X8_SSD1322_NHD_256X64_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_256x64, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1322_NHD_256X64_6800 : public U8X8 { public: U8X8_SSD1322_NHD_256X64_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_256x64, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1322_NHD_256X64_8080 : public U8X8 { public: U8X8_SSD1322_NHD_256X64_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_256x64, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1322_NHD_128X64_4W_SW_SPI : public U8X8 { public: U8X8_SSD1322_NHD_128X64_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_128x64, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1322_NHD_128X64_4W_HW_SPI : public U8X8 { public: U8X8_SSD1322_NHD_128X64_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_128x64, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1322_NHD_128X64_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1322_NHD_128X64_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_128x64, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1322_NHD_128X64_3W_SW_SPI : public U8X8 { public: U8X8_SSD1322_NHD_128X64_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_128x64, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1322_NHD_128X64_3W_HW_SPI : public U8X8 { public: U8X8_SSD1322_NHD_128X64_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_128x64, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1322_NHD_128X64_6800 : public U8X8 { public: U8X8_SSD1322_NHD_128X64_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_128x64, u8x8_cad_011, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1322_NHD_128X64_8080 : public U8X8 { public: U8X8_SSD1322_NHD_128X64_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1322_nhd_128x64, u8x8_cad_011, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SSD1606_172X72_4W_SW_SPI : public U8X8 { public: U8X8_SSD1606_172X72_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1606_172x72, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1606_172X72_4W_HW_SPI : public U8X8 { public: U8X8_SSD1606_172X72_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1606_172x72, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1606_172X72_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1606_172X72_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1606_172x72, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1606_172X72_3W_SW_SPI : public U8X8 { public: U8X8_SSD1606_172X72_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1606_172x72, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1606_172X72_3W_HW_SPI : public U8X8 { public: U8X8_SSD1606_172X72_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1606_172x72, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1607_200X200_4W_SW_SPI : public U8X8 { public: U8X8_SSD1607_200X200_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_200x200, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1607_200X200_4W_HW_SPI : public U8X8 { public: U8X8_SSD1607_200X200_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_200x200, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1607_200X200_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1607_200X200_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_200x200, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1607_200X200_3W_SW_SPI : public U8X8 { public: U8X8_SSD1607_200X200_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_200x200, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1607_200X200_3W_HW_SPI : public U8X8 { public: U8X8_SSD1607_200X200_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_200x200, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1607_GD_200X200_4W_SW_SPI : public U8X8 { public: U8X8_SSD1607_GD_200X200_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_gd_200x200, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1607_GD_200X200_4W_HW_SPI : public U8X8 { public: U8X8_SSD1607_GD_200X200_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_gd_200x200, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1607_GD_200X200_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1607_GD_200X200_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_gd_200x200, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1607_GD_200X200_3W_SW_SPI : public U8X8 { public: U8X8_SSD1607_GD_200X200_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_gd_200x200, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1607_GD_200X200_3W_HW_SPI : public U8X8 { public: U8X8_SSD1607_GD_200X200_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_gd_200x200, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SSD1607_WS_200X200_4W_SW_SPI : public U8X8 { public: U8X8_SSD1607_WS_200X200_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_ws_200x200, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_SSD1607_WS_200X200_4W_HW_SPI : public U8X8 { public: U8X8_SSD1607_WS_200X200_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_ws_200x200, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1607_WS_200X200_2ND_4W_HW_SPI : public U8X8 { public: U8X8_SSD1607_WS_200X200_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_ws_200x200, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_SSD1607_WS_200X200_3W_SW_SPI : public U8X8 { public: U8X8_SSD1607_WS_200X200_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_ws_200x200, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_SSD1607_WS_200X200_3W_HW_SPI : public U8X8 { public: U8X8_SSD1607_WS_200X200_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1607_ws_200x200, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_IL3820_296X128_4W_SW_SPI : public U8X8 { public: U8X8_IL3820_296X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_il3820_296x128, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_IL3820_296X128_4W_HW_SPI : public U8X8 { public: U8X8_IL3820_296X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_il3820_296x128, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_IL3820_296X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_IL3820_296X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_il3820_296x128, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_IL3820_296X128_3W_SW_SPI : public U8X8 { public: U8X8_IL3820_296X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_il3820_296x128, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_IL3820_296X128_3W_HW_SPI : public U8X8 { public: U8X8_IL3820_296X128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_il3820_296x128, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_IL3820_V2_296X128_4W_SW_SPI : public U8X8 { public: U8X8_IL3820_V2_296X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_il3820_v2_296x128, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_IL3820_V2_296X128_4W_HW_SPI : public U8X8 { public: U8X8_IL3820_V2_296X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_il3820_v2_296x128, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_IL3820_V2_296X128_2ND_4W_HW_SPI : public U8X8 { public: U8X8_IL3820_V2_296X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_il3820_v2_296x128, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_IL3820_V2_296X128_3W_SW_SPI : public U8X8 { public: U8X8_IL3820_V2_296X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_il3820_v2_296x128, u8x8_cad_011, u8x8_byte_arduino_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; class U8X8_IL3820_V2_296X128_3W_HW_SPI : public U8X8 { public: U8X8_IL3820_V2_296X128_3W_HW_SPI(uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_il3820_v2_296x128, u8x8_cad_011, u8x8_byte_arduino_3wire_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_3Wire_HW_SPI(getU8x8(), cs, reset); } }; class U8X8_SED1330_240X128_6800 : public U8X8 { public: U8X8_SED1330_240X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sed1330_240x128, u8x8_cad_100, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_SED1330_240X128_8080 : public U8X8 { public: U8X8_SED1330_240X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sed1330_240x128, u8x8_cad_100, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_RA8835_NHD_240X128_6800 : public U8X8 { public: U8X8_RA8835_NHD_240X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ra8835_nhd_240x128, u8x8_cad_100, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_RA8835_NHD_240X128_8080 : public U8X8 { public: U8X8_RA8835_NHD_240X128_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ra8835_nhd_240x128, u8x8_cad_100, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_RA8835_320X240_6800 : public U8X8 { public: U8X8_RA8835_320X240_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ra8835_320x240, u8x8_cad_100, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_RA8835_320X240_8080 : public U8X8 { public: U8X8_RA8835_320X240_8080(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ra8835_320x240, u8x8_cad_100, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; class U8X8_MAX7219_64X8_4W_SW_SPI : public U8X8 { public: U8X8_MAX7219_64X8_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_max7219_64x8, u8x8_cad_empty, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_MAX7219_64X8_4W_HW_SPI : public U8X8 { public: U8X8_MAX7219_64X8_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_max7219_64x8, u8x8_cad_empty, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_MAX7219_64X8_2ND_4W_HW_SPI : public U8X8 { public: U8X8_MAX7219_64X8_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_max7219_64x8, u8x8_cad_empty, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_MAX7219_32X8_4W_SW_SPI : public U8X8 { public: U8X8_MAX7219_32X8_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_max7219_32x8, u8x8_cad_empty, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_MAX7219_32X8_4W_HW_SPI : public U8X8 { public: U8X8_MAX7219_32X8_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_max7219_32x8, u8x8_cad_empty, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_MAX7219_32X8_2ND_4W_HW_SPI : public U8X8 { public: U8X8_MAX7219_32X8_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_max7219_32x8, u8x8_cad_empty, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_MAX7219_8X8_4W_SW_SPI : public U8X8 { public: U8X8_MAX7219_8X8_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_max7219_8x8, u8x8_cad_empty, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } }; class U8X8_MAX7219_8X8_4W_HW_SPI : public U8X8 { public: U8X8_MAX7219_8X8_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_max7219_8x8, u8x8_cad_empty, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; class U8X8_MAX7219_8X8_2ND_4W_HW_SPI : public U8X8 { public: U8X8_MAX7219_8X8_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_max7219_8x8, u8x8_cad_empty, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_horizontal_right_lsb); u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); } }; diff --git a/csrc/u8g2.h b/csrc/u8g2.h index 301c54608..fa17fbe24 100644 --- a/csrc/u8g2.h +++ b/csrc/u8g2.h @@ -700,6 +700,12 @@ void u8g2_Setup_sh1122_256x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_ms void u8g2_Setup_sh1122_i2c_256x64_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_sh1122_i2c_256x64_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_sh1122_i2c_256x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_sh1122_256x64_midas_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_sh1122_256x64_midas_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_sh1122_256x64_midas_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_sh1122_i2c_256x64_midas_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_sh1122_i2c_256x64_midas_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_sh1122_i2c_256x64_midas_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_ssd1306_128x32_univision_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_ssd1306_128x32_winstar_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_ssd1306_128x32_univision_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); @@ -835,6 +841,12 @@ void u8g2_Setup_ssd1327_i2c_visionox_128x96_f(u8g2_t *u8g2, const u8g2_cb_t *rot void u8g2_Setup_ssd1329_128x96_noname_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_ssd1329_128x96_noname_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_ssd1329_128x96_noname_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_ssd1362_256x64_raystar_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_ssd1362_256x64_raystar_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_ssd1362_256x64_raystar_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_ssd1362_i2c_256x64_raystar_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_ssd1362_i2c_256x64_raystar_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_ssd1362_i2c_256x64_raystar_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_ld7032_60x32_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_ld7032_60x32_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_ld7032_60x32_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); diff --git a/csrc/u8g2_buffer.c b/csrc/u8g2_buffer.c index 9aee96d4a..bbd0b4f49 100644 --- a/csrc/u8g2_buffer.c +++ b/csrc/u8g2_buffer.c @@ -60,7 +60,7 @@ static void u8g2_send_tile_row(u8g2_t *u8g2, uint8_t src_tile_row, uint8_t dest_ offset *= w; offset *= 8; ptr += offset; - u8x8_DrawTile(u8g2_GetU8x8(u8g2), 0, dest_tile_row, w, ptr); + u8x8_DrawTile(u8g2_GetU8x8(u8g2), 0/*tx*/, dest_tile_row/*ty*/, w/*tile_cnt*/, 1/*copies*/, w/*tile_buffer_width*/, ptr); } /* @@ -153,25 +153,32 @@ uint8_t u8g2_NextPage(u8g2_t *u8g2) void u8g2_UpdateDisplayArea(u8g2_t *u8g2, uint8_t tx, uint8_t ty, uint8_t tw, uint8_t th) { uint16_t page_size; + uint8_t tile_buffer_width; uint8_t *ptr; - + /* check, whether we are in full buffer mode */ if ( u8g2->tile_buf_height != u8g2_GetU8x8(u8g2)->display_info->tile_height ) return; /* not in full buffer mode, do nothing */ - page_size = u8g2->pixel_buf_width; /* 8*u8g2->u8g2_GetU8x8(u8g2)->display_info->tile_width */ - + tile_buffer_width = u8g2_GetU8x8(u8g2)->display_info->tile_width; + page_size = u8g2->pixel_buf_width; /* 8*u8g2_GetU8x8(u8g2)->display_info->tile_width */ + ptr = u8g2_GetBufferPtr(u8g2); - ptr += tx*8; + + if(u8g2->ll_hvline == u8g2_ll_hvline_vertical_top_lsb){ + ptr += tx*8; /* 8 bytes across per tile, stacked vertically */ + }else{ + ptr += tx; /* 1 byte across per tile, stacked horizontally */ + } ptr += page_size*ty; - + while( th > 0 ) { - u8x8_DrawTile( u8g2_GetU8x8(u8g2), tx, ty, tw, ptr ); + u8x8_DrawTile( u8g2_GetU8x8(u8g2), tx, ty, tw/*tile_cnt*/, 1/*copies*/, tile_buffer_width, ptr ); ptr += page_size; ty++; th--; - } + } } /* same as sendBuffer, but does not send the ePaper refresh message */ diff --git a/csrc/u8g2_d_setup.c b/csrc/u8g2_d_setup.c index 0d2d9acc2..cfd2513bd 100644 --- a/csrc/u8g2_d_setup.c +++ b/csrc/u8g2_d_setup.c @@ -1041,6 +1041,14 @@ void u8g2_Setup_sh1122_256x64_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_ms buf = u8g2_m_32_8_1(&tile_buf_height); u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); } +void u8g2_Setup_sh1122_256x64_midas_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_sh1122_256x64_midas, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_1(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} /* sh1122 2 */ void u8g2_Setup_sh1122_256x64_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) { @@ -1050,6 +1058,14 @@ void u8g2_Setup_sh1122_256x64_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_ms buf = u8g2_m_32_8_2(&tile_buf_height); u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); } +void u8g2_Setup_sh1122_256x64_midas_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_sh1122_256x64_midas, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_2(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} /* sh1122 f */ void u8g2_Setup_sh1122_256x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) { @@ -1059,6 +1075,14 @@ void u8g2_Setup_sh1122_256x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_ms buf = u8g2_m_32_8_f(&tile_buf_height); u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); } +void u8g2_Setup_sh1122_256x64_midas_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_sh1122_256x64_midas, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_f(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} /* sh1122 */ /* sh1122 1 */ void u8g2_Setup_sh1122_i2c_256x64_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) @@ -1069,6 +1093,14 @@ void u8g2_Setup_sh1122_i2c_256x64_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x buf = u8g2_m_32_8_1(&tile_buf_height); u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); } +void u8g2_Setup_sh1122_i2c_256x64_midas_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_sh1122_256x64_midas, u8x8_cad_ssd13xx_i2c, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_1(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} /* sh1122 2 */ void u8g2_Setup_sh1122_i2c_256x64_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) { @@ -1078,6 +1110,14 @@ void u8g2_Setup_sh1122_i2c_256x64_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x buf = u8g2_m_32_8_2(&tile_buf_height); u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); } +void u8g2_Setup_sh1122_i2c_256x64_midas_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_sh1122_256x64_midas, u8x8_cad_ssd13xx_i2c, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_2(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} /* sh1122 f */ void u8g2_Setup_sh1122_i2c_256x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) { @@ -1087,6 +1127,14 @@ void u8g2_Setup_sh1122_i2c_256x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x buf = u8g2_m_32_8_f(&tile_buf_height); u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); } +void u8g2_Setup_sh1122_i2c_256x64_midas_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_sh1122_256x64_midas, u8x8_cad_ssd13xx_i2c, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_f(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} /* ssd1306 */ /* ssd1306 1 */ void u8g2_Setup_ssd1306_128x32_univision_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) @@ -2307,6 +2355,62 @@ void u8g2_Setup_ssd1329_128x96_noname_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, buf = u8g2_m_16_12_f(&tile_buf_height); u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_vertical_top_lsb, rotation); } +/* ssd1362 */ +/* ssd1362 1 */ +void u8g2_Setup_ssd1362_256x64_raystar_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_ssd1362_256x64_raystar, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_1(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} +/* ssd1362 2 */ +void u8g2_Setup_ssd1362_256x64_raystar_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_ssd1362_256x64_raystar, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_2(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} +/* ssd1362 f */ +void u8g2_Setup_ssd1362_256x64_raystar_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_ssd1362_256x64_raystar, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_f(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} +/* ssd1362 */ +/* ssd1362 1 */ +void u8g2_Setup_ssd1362_i2c_256x64_raystar_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_ssd1362_256x64_raystar, u8x8_cad_ssd13xx_i2c, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_1(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} +/* ssd1362 2 */ +void u8g2_Setup_ssd1362_i2c_256x64_raystar_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_ssd1362_256x64_raystar, u8x8_cad_ssd13xx_i2c, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_2(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} +/* ssd1362 f */ +void u8g2_Setup_ssd1362_i2c_256x64_raystar_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_ssd1362_256x64_raystar, u8x8_cad_ssd13xx_i2c, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_32_8_f(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} /* ld7032 */ /* ld7032 1 */ void u8g2_Setup_ld7032_60x32_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) diff --git a/csrc/u8x8.h b/csrc/u8x8.h index b1ac18a1b..39b63a034 100644 --- a/csrc/u8x8.h +++ b/csrc/u8x8.h @@ -199,8 +199,7 @@ typedef struct u8x8_tile_struct u8x8_tile_t; typedef uint8_t (*u8x8_msg_cb)(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); typedef uint16_t (*u8x8_char_cb)(u8x8_t *u8x8, uint8_t b); - - +typedef uint8_t (*u8x8_draw_hvtile_cb)(u8x8_t *u8x8, uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t copies, uint8_t tile_buffer_width, uint8_t *tile_ptr); //struct u8x8_mcd_struct //{ @@ -215,6 +214,7 @@ struct u8x8_tile_struct uint8_t cnt; /* number of tiles */ uint8_t x_pos; /* tile x position */ uint8_t y_pos; /* tile y position */ + uint8_t buffer_width; /* tile width of buffer */ }; @@ -328,6 +328,7 @@ struct u8x8_struct const u8x8_display_info_t *display_info; u8x8_char_cb next_cb; /* procedure, which will be used to get the next char from the string */ u8x8_msg_cb display_cb; + u8x8_draw_hvtile_cb draw_hvtile_cb; /* draw hvtile procedure */ u8x8_msg_cb cad_cb; u8x8_msg_cb byte_cb; u8x8_msg_cb gpio_and_delay_cb; @@ -474,12 +475,13 @@ void u8x8_d_helper_display_init(u8x8_t *u8g2); /* Name: U8X8_MSG_DISPLAY_DRAW_TILE Args: - arg_int: How often to repeat this tile pattern + arg_int: How many copies of this tile pattern arg_ptr: pointer to u8x8_tile_t uint8_t *tile_ptr; pointer to one or more tiles (number is "cnt") uint8_t cnt; number of tiles uint8_t x_pos; first tile x position uint8_t y_pos; first tile y position + uint8_t buffer_width tile width of buffer Tasks: One tile has exactly 8 bytes (8x8 pixel monochrome bitmap). The lowest bit of the first byte is the upper left corner @@ -531,10 +533,16 @@ uint8_t u8x8_dummy_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) void u8x8_SetupDefaults(u8x8_t *u8x8); /* do not use this, use u8x8_Setup() instead */ void u8x8_Setup(u8x8_t *u8x8, u8x8_msg_cb display_cb, u8x8_msg_cb cad_cb, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +/* + draw_hvtile_cb: one of: + u8x8_draw_hvtile_vertical_top_lsb + u8x8_draw_hvtile_horizontal_right_lsb +*/ +void u8x8_SetupTile(u8x8_t *u8x8, u8x8_draw_hvtile_cb draw_hvtile_cb); /*==========================================*/ /* u8x8_display.c */ -uint8_t u8x8_DrawTile(u8x8_t *u8x8, uint8_t x, uint8_t y, uint8_t cnt, uint8_t *tile_ptr); +uint8_t u8x8_DrawTile(u8x8_t *u8x8, uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t copies, uint8_t tile_buffer_width, uint8_t *tile_ptr); /* After a call to u8x8_SetupDefaults, @@ -561,7 +569,22 @@ void u8x8_FillDisplay(u8x8_t *u8x8); void u8x8_RefreshDisplay(u8x8_t *u8x8); // make RAM content visible on the display (Dec 16: SSD1606 only) void u8x8_ClearLine(u8x8_t *u8x8, uint8_t line); +/*==========================================*/ +/* u8x8_draw_hvtile.c */ +/* + Called by u8x8 to adjust tile buffer pixel byte orentiation for display. + Vertical or Horizontal stacked + x,y tile position + tile_cnt number of tiles to draw + copies number of copies of tile pattern to draw + tile_buffer_width tile width of buffer being used for drawing + tile_ptr tile buffer +*/ +/* SSD13xx, UC17xx, UC16xx */ +uint8_t u8x8_draw_hvtile_vertical_top_lsb(u8x8_t *u8x8, uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t copies, uint8_t tile_buffer_width, uint8_t *tile_ptr); +/* SH1122, LD7032, ST7920, ST7986, LC7981, T6963, SED1330, RA8835, MAX7219, LS0 */ +uint8_t u8x8_draw_hvtile_horizontal_right_lsb(u8x8_t *u8x8, uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t copies, uint8_t tile_buffer_width, uint8_t *tile_ptr); /*==========================================*/ /* Command Arg Data (CAD) Interface */ @@ -811,6 +834,7 @@ uint8_t u8x8_d_ssd1306_128x64_vcomh0(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, uint8_t u8x8_d_ssd1306_128x64_alt0(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_ssd1309_128x64_noname0(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_ssd1309_128x64_noname2(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); +uint8_t u8x8_d_ssd1362_256x64_raystar(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_sh1106_128x64_noname(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_sh1106_128x64_vcomh0(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_sh1106_128x64_winstar(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); @@ -823,6 +847,7 @@ uint8_t u8x8_d_sh1107_pimoroni_128x128(u8x8_t *u8x8, uint8_t msg, uint8_t arg_in uint8_t u8x8_d_sh1107_seeed_128x128(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_sh1108_160x160(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_sh1122_256x64(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); +uint8_t u8x8_d_sh1122_256x64_midas(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_st7920_192x32(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_st7920_128x64(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_ssd1306_2040x16(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); @@ -901,6 +926,7 @@ uint8_t u8x8_d_ssd1327_ws_128x128(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, vo uint8_t u8x8_d_ssd1327_visionox_128x96(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_ssd1326_er_256x32(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_ssd1329_128x96_noname(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); +uint8_t u8x8_d_ssd1362_256x64_raystar(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_uc1601_128x32(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_uc1604_jlx19264(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_uc1608_erc24064(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); diff --git a/csrc/u8x8_8x8.c b/csrc/u8x8_8x8.c index 761246b4f..c09270a09 100644 --- a/csrc/u8x8_8x8.c +++ b/csrc/u8x8_8x8.c @@ -117,7 +117,8 @@ void u8x8_DrawGlyph(u8x8_t *u8x8, uint8_t x, uint8_t y, uint8_t encoding) do { u8x8_get_glyph_data(u8x8, encoding, buf, tile); - u8x8_DrawTile(u8x8, xx, y, 1, buf); + u8x8->draw_hvtile_cb(u8x8, xx, y, 1/*tile_cnt*/, 1/*copies*/, 1/*tile_buffer_width*/, buf); +// u8x8_DrawTile(u8x8, xx, y, 1, buf); tile++; xx++; } while( xx < th ); @@ -191,16 +192,20 @@ static void u8x8_draw_2x2_subglyph(u8x8_t *u8x8, uint8_t x, uint8_t y, uint8_t e buf2[i] = t & 255; } u8x8_upscale_buf(buf2, buf); - u8x8_DrawTile(u8x8, x, y, 1, buf); + u8x8->draw_hvtile_cb(u8x8, x, y, 1/*tile_cnt*/, 1/*copies*/, 1/*tile_buffer_width*/, buf); +// u8x8_DrawTile(u8x8, x, y, 1, buf); u8x8_upscale_buf(buf2+4, buf); - u8x8_DrawTile(u8x8, x+1, y, 1, buf); + u8x8->draw_hvtile_cb(u8x8, x+1, y, 1/*tile_cnt*/, 1/*copies*/, 1/*tile_buffer_width*/, buf); +// u8x8_DrawTile(u8x8, x+1, y, 1, buf); u8x8_upscale_buf(buf1, buf); - u8x8_DrawTile(u8x8, x, y+1, 1, buf); + u8x8->draw_hvtile_cb(u8x8, x, y+1, 1/*tile_cnt*/, 1/*copies*/, 1/*tile_buffer_width*/, buf); +// u8x8_DrawTile(u8x8, x, y+1, 1, buf); u8x8_upscale_buf(buf1+4, buf); - u8x8_DrawTile(u8x8, x+1, y+1, 1, buf); + u8x8->draw_hvtile_cb(u8x8, x+1, y+1, 1/*tile_cnt*/, 1/*copies*/, 1/*tile_buffer_width*/, buf); +// u8x8_DrawTile(u8x8, x+1, y+1, 1, buf); } @@ -242,8 +247,10 @@ static void u8x8_draw_1x2_subglyph(u8x8_t *u8x8, uint8_t x, uint8_t y, uint8_t e buf1[i] = t >> 8; buf2[i] = t & 255; } - u8x8_DrawTile(u8x8, x, y, 1, buf2); - u8x8_DrawTile(u8x8, x, y+1, 1, buf1); + u8x8->draw_hvtile_cb(u8x8, x, y, 1/*tile_cnt*/, 1/*copies*/, 1/*tile_buffer_width*/, buf2); + u8x8->draw_hvtile_cb(u8x8, x, y+1, 1/*tile_cnt*/, 1/*copies*/, 1/*tile_buffer_width*/, buf1); +// u8x8_DrawTile(u8x8, x, y, 1, buf2); +// u8x8_DrawTile(u8x8, x, y+1, 1, buf1); } void u8x8_Draw1x2Glyph(u8x8_t *u8x8, uint8_t x, uint8_t y, uint8_t encoding) diff --git a/csrc/u8x8_capture.c b/csrc/u8x8_capture.c index 78014e847..762d7abab 100644 --- a/csrc/u8x8_capture.c +++ b/csrc/u8x8_capture.c @@ -201,7 +201,8 @@ static void u8x8_capture_memory_copy(uint8_t *dest, uint8_t *src, uint16_t cnt) } } -static void u8x8_capture_DrawTiles(u8x8_capture_t *capture, uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t *tile_ptr) +/* vertical top lsb memory architecture */ +static void u8x8_capture_DrawTiles_1(u8x8_capture_t *capture, uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t tile_buffer_width, uint8_t *tile_ptr) { uint8_t *dest_ptr = capture->buffer; //printf("tile pos: %d %d, cnt=%d\n", tx, ty, tile_cnt); @@ -212,22 +213,44 @@ static void u8x8_capture_DrawTiles(u8x8_capture_t *capture, uint8_t tx, uint8_t u8x8_capture_memory_copy(dest_ptr, tile_ptr, tile_cnt*8); } +/* horizontal right lsb memory architecture */ +/* SH1122, LD7032, ST7920, ST7986, LC7981, T6963, SED1330, RA8835, MAX7219, LS0 */ +static void u8x8_capture_DrawTiles_2(u8x8_capture_t *capture, uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t tile_buffer_width, uint8_t *tile_ptr) +{ + uint8_t *dest_ptr = capture->buffer; + //printf("tile pos: %d %d, cnt=%d\n", tx, ty, tile_cnt); + if ( dest_ptr == NULL ) + return; + dest_ptr += (uint16_t)ty*capture->tile_width*8; + dest_ptr += (uint16_t)tx; + for(int i=0;i<8;i++){ /* 8x copy = 8x pixel rows per tile */ + u8x8_capture_memory_copy(dest_ptr, tile_ptr, tile_cnt); + dest_ptr += capture->tile_width; + tile_ptr += tile_buffer_width; + } +} uint8_t u8x8_d_capture(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { if ( msg == U8X8_MSG_DISPLAY_DRAW_TILE ) { - uint8_t x, y, c; + uint8_t tx, ty, tc, tw, arg; uint8_t *ptr; - x = ((u8x8_tile_t *)arg_ptr)->x_pos; - y = ((u8x8_tile_t *)arg_ptr)->y_pos; - c = ((u8x8_tile_t *)arg_ptr)->cnt; + tx = ((u8x8_tile_t *)arg_ptr)->x_pos; + ty = ((u8x8_tile_t *)arg_ptr)->y_pos; + tc = ((u8x8_tile_t *)arg_ptr)->cnt; + tw = ((u8x8_tile_t *)arg_ptr)->buffer_width; ptr = ((u8x8_tile_t *)arg_ptr)->tile_ptr; + arg = arg_int; do { - u8x8_capture_DrawTiles(&u8x8_capture, x, y, c, ptr); + if(u8x8->ll_hvtile == u8x8_ll_hvtile_vertical_top_lsb){ + u8x8_capture_DrawTiles_1(&u8x8_capture, tx, ty, tc, tw, ptr); + }else{ + u8x8_capture_DrawTiles_2(&u8x8_capture, tx, ty, tc, tw, ptr); + } x += c; - arg_int--; - } while( arg_int > 0 ); + arg--; + } while( arg > 0 ); /* arg_int = number of copies of tile pattern */ } return u8x8_capture.old_cb(u8x8, msg, arg_int, arg_ptr); } diff --git a/csrc/u8x8_d_sh1122_256x64.c b/csrc/u8x8_d_sh1122_256x64.c new file mode 100644 index 000000000..4d30eba6c --- /dev/null +++ b/csrc/u8x8_d_sh1122_256x64.c @@ -0,0 +1,272 @@ +/* + + u8x8_d_sh1122.c + + Universal 8bit 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. + + + 256x64 pixel, 16 grey levels(two pixel per byte in CGRAM) + +*/ +#include "u8x8.h" + +#ifdef U8X8_WITH_SET_GREY +static uint8_t u8x8_d_sh1122_grey_level=0xff; /* 2px 16 grey levels */ +#endif +/*=========================================================*/ +static uint8_t u8x8_d_sh1122_8px_byte_conversion(u8x8_t *u8x8, uint8_t pixel_byte, uint8_t *buf){ /* input: one byte 8px; output: four bytes 8px 4bit grey */ +#ifdef U8X8_WITH_SET_GREY + buf[0] = u8x8_d_sh1122_grey_level; + if( !(pixel_byte&128) ) buf[0] &= 0x0f; + if( !(pixel_byte&64) ) buf[0] &= 0xf0; + buf[1] = u8x8_d_sh1122_grey_level; + if( !(pixel_byte&32) ) buf[1] &= 0x0f; + if( !(pixel_byte&16) ) buf[1] &= 0xf0; + buf[2] = u8x8_d_sh1122_grey_level; + if( !(pixel_byte&8) ) buf[2] &= 0x0f; + if( !(pixel_byte&4) ) buf[2] &= 0xf0; + buf[3] = u8x8_d_sh1122_grey_level; + if( !(pixel_byte&2) ) buf[3] &= 0x0f; + if( !(pixel_byte&1) ) buf[3] &= 0xf0; +#else + buf[0] = 0xff; + if( !(pixel_byte&128) ) buf[0] &= 0x0f; + if( !(pixel_byte&64) ) buf[0] &= 0xf0; + buf[1] = 0xff; + if( !(pixel_byte&32) ) buf[1] &= 0x0f; + if( !(pixel_byte&16) ) buf[1] &= 0xf0; + buf[2] = 0xff; + if( !(pixel_byte&8) ) buf[2] &= 0x0f; + if( !(pixel_byte&4) ) buf[2] &= 0xf0; + buf[3] = 0xff; + if( !(pixel_byte&2) ) buf[3] &= 0x0f; + if( !(pixel_byte&1) ) buf[3] &= 0xf0; +#endif + return 4; +} + +uint8_t u8x8_d_sh1122_draw_tile(u8x8_t *u8x8, uint8_t arg_int, void *arg_ptr){ + uint8_t col, row, tile_buffer_width, tile_cnt, copies, i; + uint8_t *ptr; + static uint8_t buf[4]; /* 4 bytes for a tile - 8px columns */ + + col = ((u8x8_tile_t *)arg_ptr)->x_pos; + col *= 8/2; /* 2px per column byte - 8px per tile = 4 columns(bytes) */ + col += u8x8->x_offset; + row = (((u8x8_tile_t *)arg_ptr)->y_pos); + row *= 8; /* 1px per row - 8px per tile = 8 rows */ +// tile_cnt = ((u8x8_tile_t *)arg_ptr)->cnt; /* number of tiles to send to display */ +// ptr = ((u8x8_tile_t *)arg_ptr)->tile_ptr; /* buffer pointer to 1st tile to send to display */ + tile_buffer_width = ((u8x8_tile_t *)arg_ptr)->buffer_width; /* tile width of buffer */ + + u8x8_cad_StartTransfer(u8x8); + for( i = 0; i < 8; i++ ) { /* single tile row */ + u8x8_cad_SendCmd(u8x8, col & 15 ); /* lower 4 bit*/ + u8x8_cad_SendCmd(u8x8, 0x10 | (col >> 4) ); /* higher 3 bit */ + u8x8_cad_SendCmd(u8x8, 0xb0 ); /* set row address */ + u8x8_cad_SendArg(u8x8, row); + copies = arg_int; + do { + tile_cnt = ((u8x8_tile_t *)arg_ptr)->cnt; /* number of tiles to send */ + ptr = ((u8x8_tile_t *)arg_ptr)->tile_ptr + i * tile_buffer_width; /* loads at start and when tiles repeats */ + while ( tile_cnt > 0){ + u8x8_d_sh1122_8px_byte_conversion(u8x8, *ptr, buf); /* 1 byte mono to 4 byte grey */ + u8x8_cad_SendData(u8x8, 4, buf); + tile_cnt--; + ptr++; + } + copies--; + } while( copies > 0 ); /* number of copies of tile pattern */ + row++; + } + u8x8_cad_EndTransfer(u8x8); +} + +/*=========================================================*/ +static const u8x8_display_info_t u8x8_sh1122_256x64_display_info = { + /* chip_enable_level = */ 0, + /* chip_disable_level = */ 1, + /* post_chip_enable_wait_ns = */ 40, + /* pre_chip_disable_wait_ns = */ 10, + /* reset_pulse_width_ms = */ 10, /* sh1122: 10 us */ + /* post_reset_wait_ms = */ 10, /* sh1122: 2us */ + /* sda_setup_time_ns = */ 150, /* sh1122: cycle time is 250ns, so use 300/2 */ + /* sck_pulse_width_ns = */ 150, /* sh1122: cycle time is 250ns, so use 300/2 */ + /* sck_clock_hz = */ 40000000UL, /* since Arduino 1.6.0, the SPI bus speed in Hz. Should be 1000000000/sck_pulse_width_ns */ + /* spi_mode = */ 0, /* active high, rising edge */ + /* i2c_bus_clock_100kHz = */ 4, + /* data_setup_time_ns = */ 40, + /* write_pulse_width_ns = */ 150, /* sh1122: cycle time is 300ns, so use 300/2 = 150 */ + /* tile_width = */ 32, /* 256 pixel, so we require 32 bytes for this */ + /* tile_hight = */ 8, + /* default_x_offset = */ 0, /* this is the byte offset (there are two pixel per byte with 4 bit per pixel) */ + /* flipmode_x_offset = */ 0, + /* pixel_width = */ 256, + /* pixel_height = */ 64 +}; + +static const uint8_t u8x8_d_sh1122_powersave0_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_C(0xaf), /* display on - normal mode */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +static const uint8_t u8x8_d_sh1122_powersave1_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_C(0xae), /* display off - some commands only work when display off! */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +static const uint8_t u8x8_d_sh1122_256x64_midas_flip0_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_C(0xa0), /* enable right rotation */ + U8X8_C(0xc0), /* normal COM scan */ + U8X8_C(0x40), /* 0x00 - display start line - RAM vertical shift */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +static const uint8_t u8x8_d_sh1122_256x64_midas_flip1_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_C(0xa1), /* enable left rotation */ + U8X8_C(0xc8), /* reverse COM scan */ + U8X8_C(0x60), /* 0x20 - display start line - RAM vertical shift */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +/* Midas MCOT256064DY-WM OLED 256x64 16 levels of grey */ +static const uint8_t u8x8_d_sh1122_256x64_midas_init_seq[] = { + U8X8_DLY(1), + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_DLY(1), + + U8X8_C(0xae), /*POR 0xae; 0/1; display off - some commands only work when display off! */ +/// U8X8_C(0xaf), /* display on - normal mode */ + U8X8_C(0x00), /*POR 0x00; 0x0n 0..15 Nn=N*16+n=0..127; column RAM address */ + U8X8_C(0x10), /*POR 0x10; 0x1N 0..7 Nn=N*16+n=0..127; column RAM address */ + U8X8_CA(0xb0, 0x00), /*POR 0x00; 0..63; row RAM address */ + U8X8_CA(0xd3, 0x00), /*POR 0x00; 0..63; set display offset - COM vertical shift */ +#if(1) /* removed as setFlipMode(0) in .begin constructor(s), otherwise display flicks about when processor reset and using u8g2.beginSimple() for silent resets */ + U8X8_C(0x40), /*POR 0x40; 0..63; display start line - RAM vertical shift */ + U8X8_C(0xa0), /*POR 0xa0; 0/1; enable right rotation */ +/// U8X8_C(0xa1), /* enable left rotation */ + U8X8_C(0xc0), /*POR 0xc0; 0/8; normal COM scan */ +/// U8X8_C(0xc8), /* reverse COM scan */ +#endif +/// U8X8_CA(0x81, 0x38), + U8X8_CA(0x81, 0x80), /*POR 0x80; 0..255; set display contrast */ + U8X8_C(0xa4), /*POR 0xa4; 0/1; normal display */ +/// U8X8_C(0xa5), /* entire display ON */ + U8X8_C(0xa6), /*POR 0xa6; 0/1; normal display */ +/// U8X8_C(0xa7), /* enable inverse display */ + U8X8_CA(0xa8, 0x3f), /*POR 0x3f; 0..63; multiplex MUX ratio - active rows 1-64 */ +/// U8X8_CA(0xad, 0x81), /*POR 0x81; 0x8Nn=0b1000NNNn 0..7,0..1; enable builtin DC-DC & frequency - display needs to be off */ + U8X8_CA(0xad, 0x80), /* disable builtin DC-DC - display needs to be off */ +// U8X8_CA(0xad, 0x8N), /*0x0N N=0..7<<1; set builtin DC-DC frequency = (0.6+0.1*N)*500 kHz */ +// U8X8_CA(0xad, 0x8n), /*0x0n n=0/1; enable(1) builtin DC-DC */ + U8X8_CA(0xd5, 0x90), /* set display clock(fosc*1.2) & divide(dclk/1) */ +/// U8X8_CA(0xd5, 0x50), /*POR 0x50; 0xNn N=0..15,n=0..15; set display clock & divide */ +// U8X8_CA(0xd5, 0x0n), /*0x0n n=0..15; set display divide ratio = dclk/(1+n) */ +// U8X8_CA(0xd5, 0xN0), /*0xN0 N=0..15<<4; set display clock frequency = fosc*(0.75+0.05*N) */ + U8X8_CA(0xd9, 0x44), /* discharge(4*dclk) & precharge(12*dclk) period */ +/// U8X8_CA(0xd9, 0x22), /*POR 0x22; 0xNn N=0..15,n=0..15; discharge & precharge period */ +// U8X8_CA(0xd9, 0x0n), /*0x0n n=1..15; precharge period = n*dclk */ +// U8X8_CA(0xd9, 0xN0), /*0xN0 N=1..15<<4; discharge period = n*dclk */ + U8X8_CA(0xdb, 0x3b), /* VCOM level - deselect voltage(0.808485*VREF) */ +/// U8X8_CA(0xdb, 0x35), /*POR 0x35; n=0..255; VCOM level - deselect voltage; VCOM = β1*VREF = (0.43+n*0.006415)*VREF */ +// U8X8_CA(0xdc, 0x1a), /* VSEGM level - precharge voltage(0.59679*VREF) */ + U8X8_CA(0xdc, 0x35), /*POR 0x35; 0..255; VSEGM level - precharge voltage; VSEGM = β2*VREF = (0.43+n*0.006415)*VREF */ + U8X8_C(0x030), /*POR 0x30; n=0..15; VSL level - discharge voltage(0); VSL = n==0?0:(0.75+0.25*n) */ + + U8X8_DLY(1), /* delay */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; +/*=========================================================*/ +uint8_t u8x8_d_sh1122_common(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { + switch(msg) { + case U8X8_MSG_DISPLAY_SET_POWER_SAVE: + if ( arg_int == 0 ) + u8x8_cad_SendSequence(u8x8, u8x8_d_sh1122_powersave0_seq); + else + u8x8_cad_SendSequence(u8x8, u8x8_d_sh1122_powersave1_seq); + break; +#ifdef U8X8_WITH_SET_CONTRAST + case U8X8_MSG_DISPLAY_SET_CONTRAST: + u8x8_cad_StartTransfer(u8x8); + u8x8_cad_SendCmd(u8x8, 0x81 ); + u8x8_cad_SendArg(u8x8, arg_int ); /* device's contrast range from 0 to 255 */ + u8x8_cad_EndTransfer(u8x8); + break; +#endif +#ifdef U8X8_WITH_SET_GREY + case U8X8_MSG_DISPLAY_SET_GREY: + u8x8_d_sh1122_grey_level = arg_int>>4; /* device's pixel grey level range from 0 to 15 */ + u8x8_d_sh1122_grey_level |= (u8x8_d_sh1122_grey_level<<4); /* 2 pixel mask */ + break; +#endif + case U8X8_MSG_DISPLAY_DRAW_TILE: + u8x8_d_sh1122_draw_tile(u8x8, arg_int, arg_ptr); + break; + default: + return 0; + } + return 1; +} +/*=========================================================*/ +uint8_t u8x8_d_sh1122_256x64_midas(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { + if (u8x8_d_sh1122_common(u8x8, msg, arg_int, arg_ptr) != 0) + return 1; + + switch(msg) { + case U8X8_MSG_DISPLAY_SETUP_MEMORY: + u8x8_d_helper_display_setup_memory(u8x8, &u8x8_sh1122_256x64_display_info); + break; + case U8X8_MSG_DISPLAY_INIT: + u8x8_d_helper_display_init(u8x8); + u8x8_cad_SendSequence(u8x8, u8x8_d_sh1122_256x64_midas_init_seq); + break; + case U8X8_MSG_DISPLAY_SET_FLIP_MODE: + if ( arg_int == 0 ){ + u8x8_cad_SendSequence(u8x8, u8x8_d_sh1122_256x64_midas_flip0_seq); + u8x8->x_offset = u8x8->display_info->default_x_offset; + }else{ + u8x8_cad_SendSequence(u8x8, u8x8_d_sh1122_256x64_midas_flip1_seq); + u8x8->x_offset = u8x8->display_info->flipmode_x_offset; + } + break; + default: + return 0; + } + return 1; +} diff --git a/csrc/u8x8_d_ssd1362_256x64.c b/csrc/u8x8_d_ssd1362_256x64.c new file mode 100644 index 000000000..4a21f1cee --- /dev/null +++ b/csrc/u8x8_d_ssd1362_256x64.c @@ -0,0 +1,282 @@ +/* + + u8x8_d_ssd1362.c + + Universal 8bit 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. + + + 256x64 pixel, 16 grey levels(two pixel per byte in CGRAM) + +*/ +#include "u8x8.h" + +#ifdef U8X8_WITH_SET_GREY +static uint8_t u8x8_d_ssd1362_grey_level=0xff; /* 2px 16 grey levels */ +#endif + +static uint8_t u8x8_d_ssd1362_8px_byte_conversion(u8x8_t *u8x8, uint8_t pixel_byte, uint8_t *buf){ /* input: one byte 8px; output: four bytes 8px 4bit grey */ +#ifdef U8X8_WITH_SET_GREY + buf[0] = u8x8_d_ssd1362_grey_level; + if( !(pixel_byte&128) ) buf[0] &= 0x0f; + if( !(pixel_byte&64) ) buf[0] &= 0xf0; + buf[1] = u8x8_d_ssd1362_grey_level; + if( !(pixel_byte&32) ) buf[1] &= 0x0f; + if( !(pixel_byte&16) ) buf[1] &= 0xf0; + buf[2] = u8x8_d_ssd1362_grey_level; + if( !(pixel_byte&8) ) buf[2] &= 0x0f; + if( !(pixel_byte&4) ) buf[2] &= 0xf0; + buf[3] = u8x8_d_ssd1362_grey_level; + if( !(pixel_byte&2) ) buf[3] &= 0x0f; + if( !(pixel_byte&1) ) buf[3] &= 0xf0; +#else + buf[0] = 0xff; + if( !(pixel_byte&128) ) buf[0] &= 0x0f; + if( !(pixel_byte&64) ) buf[0] &= 0xf0; + buf[1] = 0xff; + if( !(pixel_byte&32) ) buf[1] &= 0x0f; + if( !(pixel_byte&16) ) buf[1] &= 0xf0; + buf[2] = 0xff; + if( !(pixel_byte&8) ) buf[2] &= 0x0f; + if( !(pixel_byte&4) ) buf[2] &= 0xf0; + buf[3] = 0xff; + if( !(pixel_byte&2) ) buf[3] &= 0x0f; + if( !(pixel_byte&1) ) buf[3] &= 0xf0; +#endif + return 4; +} + +uint8_t u8x8_d_ssd1362_draw_tile(u8x8_t *u8x8, uint8_t arg_int, void *arg_ptr){ + uint8_t col, row, tile_buffer_width, tile_cnt, copies, i; + uint8_t *ptr; + static uint8_t buf[4]; /* 4 bytes for a tile - 8px columns */ + + col = ((u8x8_tile_t *)arg_ptr)->x_pos; + col *= 8/2; /* 2px per column byte - 8px per tile = 4 columns(bytes) */ + col += u8x8->x_offset; + row = (((u8x8_tile_t *)arg_ptr)->y_pos); + row *= 8; /* 1px per row - 8px per tile = 8 rows */ + tile_buffer_width = ((u8x8_tile_t *)arg_ptr)->buffer_width; /* tile width of buffer */ + + u8x8_cad_StartTransfer(u8x8); + for( i = 0; i < 8; i++ ) { + u8x8_cad_SendCmd(u8x8, 0x15 ); /* set column start, end address */ + u8x8_cad_SendCmd(u8x8, col ); + u8x8_cad_SendCmd(u8x8, 0x7f); + u8x8_cad_SendCmd(u8x8, 0x75 ); /* set row start,end address */ + u8x8_cad_SendArg(u8x8, row); + u8x8_cad_SendArg(u8x8, 0x3f); + copies = arg_int; + do { + tile_cnt = ((u8x8_tile_t *)arg_ptr)->cnt; /* number of tiles to send to display */ + ptr = ((u8x8_tile_t *)arg_ptr)->tile_ptr; + ptr += i * tile_buffer_width; /* loads at start and when tiles repeats */ + while ( tile_cnt > 0){ + u8x8_d_ssd1362_8px_byte_conversion(u8x8, *ptr, buf); /* 1 byte mono to 4 byte grey */ + u8x8_cad_SendData(u8x8, 4, buf); + tile_cnt--; + ptr++; + } + copies--; + } while( copies > 0 ); /* number of copies of tile pattern */ + row++; + } + u8x8_cad_EndTransfer(u8x8); +} +/*=========================================================*/ +static const u8x8_display_info_t u8x8_ssd1362_256x64_display_info = { + /* chip_enable_level = */ 0, + /* chip_disable_level = */ 1, + /* post_chip_enable_wait_ns = */ 45, + /* pre_chip_disable_wait_ns = */ 20, + /* reset_pulse_width_ms = */ 10, /* ssd1362: 100us */ + /* post_reset_wait_ms = */ 10, /* ssd1362: 100us */ + /* sda_setup_time_ns = */ 50, /* ssd1362: cycle time is 100ns, so use 100/2 */ + /* sck_pulse_width_ns = */ 50, /* ssd1362: cycle time is 100ns, so use 100/2 */ + /* sck_clock_hz = */ 10000000UL, /* since Arduino 1.6.0, the SPI bus speed in Hz. Should be 1000000000/sck_pulse_width_ns */ + /* spi_mode = */ 0, /* active high, rising edge */ + /* i2c_bus_clock_100kHz = */ 4, + /* data_setup_time_ns = */ 15, + /* write_pulse_width_ns = */ 150, /* ssd1362: cycle time is 300ns, so use 300/2 = 150 */ + /* tile_width = */ 32, /* 256 pixel, so we require 32 bytes for this */ + /* tile_hight = */ 8, + /* default_x_offset = */ 0, /* this is the byte offset (there are two pixel per byte with 4 bit per pixel) */ + /* flipmode_x_offset = */ 0, + /* pixel_width = */ 256, + /* pixel_height = */ 64 +}; + +static const uint8_t u8x8_d_ssd1362_powersave0_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_C(0x0af), /* display on - normal mode */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +static const uint8_t u8x8_d_ssd1362_powersave1_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_C(0x0ae), /* display off - sleep mode */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +static const uint8_t u8x8_d_ssd1362_256x64_raystar_flip0_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_CA(0xa0,0xc3), /* remap normal */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +static const uint8_t u8x8_d_ssd1362_256x64_raystar_flip1_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_CA(0xa0,0xd0), /* remap flipped */ +///or U8X8_CA(0xa0,0x52), /* remap flipped */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +/* Raystar REX025664A-ZIF OLED 256x64 16 levels of grey */ +/* Midas MDOT256064G1V-WM OLED 256x64 16 levels of grey */ +static const uint8_t u8x8_d_ssd1362_256x64_raystar_init_seq[] = { + U8X8_DLY(1), + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_DLY(1), + + U8X8_CA(0xfd, 0x12), /*POR 0x12; 0/4; unlock command */ +/// U8X8_CA(0xfd, 0x16), /* lock command */ + U8X8_C(0xae), /*POR; 0/1; display off - sleep mode */ +/// U8X8_C(0xaf), /* display on - normal mode */ + U8X8_CAA(0x15, 0x00, 0x7f), /*POR 0x00,0x7f; 0..127,0..127; set column address range(0x15,start,end)*/ + U8X8_CAA(0x75, 0x00, 0x3f), /*POR 0x00,0x3f; 0..63,0..63; set row address range(0x75,start,end) */ + U8X8_CA(0x81, 0x80), /*POR 0x7f; 0..255; set display contrast */ +#if(1) /* removed as setFlipMode(0) in .begin constructor(s), otherwise display flicks about when processor reset and using u8g2.beginSimple() for silent resets */ +/// U8X8_CA(0xa0, 0x40), /*POR 0x40; 0bLS0C0VNA; set remap */ + U8X8_CA(0xa0, 0xc3), /* remap flip 0 */ +// U8X8_CA(0xa0, 0x01), /* A=0/1; enable column address remap */ +// U8X8_CA(0xa0, 0x02), /* N=0/2; enable nibble remap */ +// U8X8_CA(0xa0, 0x04), /* V=0/4; enable horizontal(0)/vertical(4) address increments */ +// U8X8_CA(0xa0, 0x10), /* C=0/16; enable COM remap */ +// U8X8_CA(0xa0, 0x40), /* S=0/64; enable SEG split odd even */ +// U8X8_CA(0xa0, 0x80), /* L=0/128; enable SEG left/right remap */ +#endif + U8X8_CA(0xa1, 0x00), /*POR 0x00; 0..63; display start line - RAM vertical shift */ + U8X8_CA(0xa2, 0x00), /*POR 0x00; 0..63; set display Offset - COM vertical shift */ + U8X8_C(0xa4), /*POR; normal display */ +/// U8X8_C(0xa5), /* all pixels fully ON display */ +/// U8X8_C(0xa6), /* all pixels OFF display */ +/// U8X8_C(0xa7), /* enable inverse display */ + U8X8_CA(0xa8, 0x3f), /*POR 0x3f; 3..63; set multiplex MUX Ratio - active rows 4-64 */ + U8X8_CA(0xab, 0x01), /*POR 0X01; 0/1; enable internal VDD regulator */ +/// U8X8_CA(0xab, 0x00), /* external VDD, disable internal VDD regulator */ +/// U8X8_CA(0xad, 0x8e), /*POR 0x8e; external IREF */ + U8X8_CA(0xad, 0x9e), /* enable internal IREF */ + U8X8_CA(0xb1, 0x22), /*POR 0x82; set phase length */ +// U8X8_CA(0xb1, 0x0n), /*0x0n n=1..15; phase1(discharge) period = 2*n*dclk */ +// U8X8_CA(0xb1, 0xN0), /*0xN0 N=1..15<<4; phase2(1st precharge) period = 2*N*dclk */ + U8X8_CA(0xb3, 0xa0), /*POR 0xa1; display clock & divider */ +// U8X8_CA(0xb3, 0x0n), /*0x0n n=0..8; display clock divider = dclk>>n */ +// U8X8_CA(0xb3, 0xN0), /*0xN0 N=0..15<<4; display clock frequency increase n */ + U8X8_CA(0xb6, 0x04), /*POR 0x04; 1..15; set phase3(2nd precharge) period = n*dclk */ + U8X8_C(0xb9), /* set linear grey LUT */ +/// U8X8_CAAA(0xb8, 12, 24, 36), /* custom grey LUT, 0140, GS1, GS2, GS3 */ +/// U8X8_A4(48, 60, 72, 84), /* GS4, GS5, GS6, GS7 */ +/// U8X8_A4(96, 108, 120, 132), /* GS8, GS9, GS10,GS11 */ +/// U8X8_A4(144, 156, 168, 180), /* GS12,GS13,GS14,GS15>140 */ + U8X8_CA(0xbc, 0x10), /*POR 0x04; n=0..31 set pre-charge voltage level = 0.1+0.0133*n*Vcc */ +/// U8X8_CA(0xbd, 0x00), /*POR 0x00; no external Vp capacitor */ + U8X8_CA(0xbd, 0x01), /* external Vp capacitor */ + U8X8_CA(0xbe, 0x07), /*POR 0x05; n=0..7; set COM level, deselect voltage = 0.72+0.02*n*Vcc */ + U8X8_CA(0x23, 0x00), /*POR 0x00; Disable fade mode */ +// U8X8_CA(0x23, 0x1x), /* enable fade in mode */ +// U8X8_CA(0x23, 0x2x), /* enable fade out mode */ +// U8X8_CA(0x23, 0x3x), /* enable continous fade out/in mode */ +// U8X8_CA(0x23, 0x0n), /* n=0..15 fade interval=8*(n+1) frames */ + + U8X8_DLY(1), /* delay */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; +/*=========================================================*/ +uint8_t u8x8_d_ssd1362_common(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { + switch(msg){ + case U8X8_MSG_DISPLAY_SET_POWER_SAVE: + if ( arg_int == 0 ) + u8x8_cad_SendSequence(u8x8, u8x8_d_ssd1362_powersave0_seq); + else + u8x8_cad_SendSequence(u8x8, u8x8_d_ssd1362_powersave1_seq); + break; +#ifdef U8X8_WITH_SET_CONTRAST + case U8X8_MSG_DISPLAY_SET_CONTRAST: + u8x8_cad_StartTransfer(u8x8); + u8x8_cad_SendCmd(u8x8, 0x81 ); + u8x8_cad_SendArg(u8x8, arg_int ); /* device's contrast range from 0 to 255 */ + u8x8_cad_EndTransfer(u8x8); + break; +#endif +#ifdef U8X8_WITH_SET_GREY + case U8X8_MSG_DISPLAY_SET_GREY: + u8x8_d_ssd1362_grey_level = arg_int>>4; /* device's pixel grey level range from 0 to 15 */ + u8x8_d_ssd1362_grey_level |= (u8x8_d_ssd1362_grey_level<<4); /* 2 pixel mask */ + break; +#endif + case U8X8_MSG_DISPLAY_DRAW_TILE: + u8x8_d_ssd1362_draw_tile(u8x8, arg_int, arg_ptr); + break; + default: + return 0; + } + return 1; +} +/*=========================================================*/ +uint8_t u8x8_d_ssd1362_256x64_raystar(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { + if (u8x8_d_ssd1362_common(u8x8, msg, arg_int, arg_ptr) != 0) + return 1; + + switch(msg){ + case U8X8_MSG_DISPLAY_SETUP_MEMORY: + u8x8_d_helper_display_setup_memory(u8x8, &u8x8_ssd1362_256x64_display_info); + break; + case U8X8_MSG_DISPLAY_INIT: + u8x8_d_helper_display_init(u8x8); + u8x8_cad_SendSequence(u8x8, u8x8_d_ssd1362_256x64_raystar_init_seq); + break; + case U8X8_MSG_DISPLAY_SET_FLIP_MODE: + if ( arg_int == 0 ){ + u8x8_cad_SendSequence(u8x8, u8x8_d_ssd1362_256x64_raystar_flip0_seq); + u8x8->x_offset = u8x8->display_info->default_x_offset; + }else{ + u8x8_cad_SendSequence(u8x8, u8x8_d_ssd1362_256x64_raystar_flip1_seq); + u8x8->x_offset = u8x8->display_info->flipmode_x_offset; + } + break; + default: + return 0; + } + return 1; +} diff --git a/csrc/u8x8_display.c b/csrc/u8x8_display.c index 4f4d4f7ad..bdb73113b 100644 --- a/csrc/u8x8_display.c +++ b/csrc/u8x8_display.c @@ -79,14 +79,16 @@ void u8x8_d_helper_display_init(u8x8_t *u8x8) /*==========================================*/ /* official functions */ -uint8_t u8x8_DrawTile(u8x8_t *u8x8, uint8_t x, uint8_t y, uint8_t cnt, uint8_t *tile_ptr) +uint8_t u8x8_DrawTile(u8x8_t *u8x8, uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t copies, uint8_t tile_buffer_width, uint8_t *tile_ptr) { u8x8_tile_t tile; - tile.x_pos = x; - tile.y_pos = y; - tile.cnt = cnt; + tile.x_pos = tx; + tile.y_pos = ty; + tile.cnt = tile_cnt; + tile.buffer_width = tile_buffer_width; tile.tile_ptr = tile_ptr; - return u8x8->display_cb(u8x8, U8X8_MSG_DISPLAY_DRAW_TILE, 1, (void *)&tile); + + return u8x8->display_cb(u8x8, U8X8_MSG_DISPLAY_DRAW_TILE, copies, (void *)&tile); } /* should be implemented as macro */ @@ -122,20 +124,11 @@ void u8x8_RefreshDisplay(u8x8_t *u8x8) void u8x8_ClearDisplayWithTile(u8x8_t *u8x8, const uint8_t *buf) { - u8x8_tile_t tile; - uint8_t h; - - tile.x_pos = 0; - tile.cnt = 1; - tile.tile_ptr = (uint8_t *)buf; /* tile_ptr should be const, but isn't */ - - h = u8x8->display_info->tile_height; - tile.y_pos = 0; - do - { - u8x8->display_cb(u8x8, U8X8_MSG_DISPLAY_DRAW_TILE, u8x8->display_info->tile_width, (void *)&tile); - tile.y_pos++; - } while( tile.y_pos < h ); + uint8_t line=0; + do { + u8x8->draw_hvtile_cb(u8x8, 0/*tx*/, line/*ty*/, 1/*tile_cnt*/, u8x8->display_info->tile_width/*copies*/, 1/*tile_buffer_width*/, buf); + line++; + } while( line < u8x8->display_info->tile_height ); } void u8x8_ClearDisplay(u8x8_t *u8x8) @@ -156,10 +149,6 @@ void u8x8_ClearLine(u8x8_t *u8x8, uint8_t line) u8x8_tile_t tile; if ( line < u8x8->display_info->tile_height ) { - tile.x_pos = 0; - tile.y_pos = line; - tile.cnt = 1; - tile.tile_ptr = (uint8_t *)buf; /* tile_ptr should be const, but isn't */ - u8x8->display_cb(u8x8, U8X8_MSG_DISPLAY_DRAW_TILE, u8x8->display_info->tile_width, (void *)&tile); + u8x8->draw_hvtile_cb(u8x8, 0/*tx*/, line/*ty*/, 1/*tile_cnt*/, u8x8->display_info->tile_width/*copies*/, 1/*tile_buffer_width*/, buf); } } \ No newline at end of file diff --git a/csrc/u8x8_draw_hvtile.c b/csrc/u8x8_draw_hvtile.c new file mode 100644 index 000000000..efac592d9 --- /dev/null +++ b/csrc/u8x8_draw_hvtile.c @@ -0,0 +1,91 @@ +/* + + u8x8_draw_hvtile.c + + draw hvtile + + Universal 8bit 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 "u8x8.h" + +/*=================================================*/ +/* + u8x8_draw_hvtile_vertical_top_lsb + + x,y tile position + tile_cnt number of tiles to draw + copies number of copies of tile pattern to draw + tile_buffer_width tile width of buffer being used for drawing + tile_ptr tile buffer +*/ +/* SSD13XX, UC1701 */ +uint8_t u8x8_draw_hvtile_vertical_top_lsb(u8x8_t *u8x8, uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t copies, uint8_t tile_buffer_width, uint8_t *tile_ptr) +{ + return u8x8_DrawTile(u8x8, tx, ty, tile_cnt, copies, tile_buffer_width, tile_ptr); /* tiles vertical by default */ +} + +/*=================================================*/ +/* + u8x8_draw_hvtile_horizontal_right_lsb + + x,y tile position + tile_cnt number of tiles to draw + copies number of copies of tile pattern to draw + tile_buffer_width tile width of buffer being used for drawing + tile_ptr tile buffer +*/ +/* SH1122, LD7032, ST7920, ST7986, LC7981, T6963, SED1330, RA8835, MAX7219, LS0 */ +uint8_t u8x8_draw_hvtile_horizontal_right_lsb(u8x8_t *u8x8, uint8_t tx, uint8_t ty, uint8_t tile_cnt, uint8_t copies, uint8_t tile_buffer_width, uint8_t *tile_ptr) +{ + uint8_t hvbuffer[8 * tile_cnt]; /* buffer for converted tile */ + uint8_t *ptr; + uint8_t t,i; + + for( t = 0; t < tile_cnt; t++ ){ + ptr = hvbuffer + t; /* horizontal tile, move +1 byte */ + for( i = 0; i < 8; i++ ){ + *ptr =((*(tile_ptr) &(1<>i)<<7; + *ptr +=((*(tile_ptr+1)&(1<>i)<<6; + *ptr +=((*(tile_ptr+2)&(1<>i)<<5; + *ptr +=((*(tile_ptr+3)&(1<>i)<<4; + *ptr +=((*(tile_ptr+4)&(1<>i)<<3; + *ptr +=((*(tile_ptr+5)&(1<>i)<<2; + *ptr +=((*(tile_ptr+6)&(1<>i)<<1; + *ptr +=((*(tile_ptr+7)&(1<>i); + ptr += tile_cnt; /* next horizontal tile row */ + } + tile_ptr += 8; /* vertical tile, move +8 bytes */ + } + + return u8x8_DrawTile(u8x8, tx, ty, tile_cnt, copies, tile_cnt/*tile_buffer_width*/, hvbuffer); +} + diff --git a/csrc/u8x8_setup.c b/csrc/u8x8_setup.c index 072da9fad..afc9500fe 100644 --- a/csrc/u8x8_setup.c +++ b/csrc/u8x8_setup.c @@ -96,6 +96,7 @@ void u8x8_SetupDefaults(u8x8_t *u8x8) { u8x8->display_info = NULL; u8x8->display_cb = u8x8_dummy_cb; + u8x8->draw_hvtile_cb = u8x8_draw_hvtile_vertical_top_lsb; u8x8->cad_cb = u8x8_dummy_cb; u8x8->byte_cb = u8x8_dummy_cb; u8x8->gpio_and_delay_cb = u8x8_dummy_cb; @@ -145,3 +146,15 @@ void u8x8_Setup(u8x8_t *u8x8, u8x8_msg_cb display_cb, u8x8_msg_cb cad_cb, u8x8_m u8x8_SetupMemory(u8x8); } +/*============================================*/ +/* + This procedure is called after setting up the display (u8x8 structure). + --> This is the central init procedure for u8x8 object + draw_hvtile_cb: one of: + u8x8_draw_hvtile_vertical_top_lsb + u8x8_draw_hvtile_horizontal_right_lsb +*/ +void u8x8_SetupTile(u8x8_t *u8x8, u8x8_draw_hvtile_cb draw_hvtile_cb) +{ + u8x8->draw_hvtile_cb = draw_hvtile_cb; +} \ No newline at end of file diff --git a/tools/codebuild/codebuild.c b/tools/codebuild/codebuild.c index dab4cf00d..e01afe540 100644 --- a/tools/codebuild/codebuild.c +++ b/tools/codebuild/codebuild.c @@ -297,6 +297,7 @@ struct controller controller_list[] = "", /* is_generate_u8g2_class= */ 1, { { "256x64" }, + { "256x64_midas" }, { NULL } } }, @@ -305,6 +306,7 @@ struct controller controller_list[] = "", /* is_generate_u8g2_class= */ 1, { { "256x64" }, + { "256x64_midas" }, { NULL } } }, @@ -626,8 +628,24 @@ struct controller controller_list[] = { NULL } } }, + + { + "ssd1362", 32, 8, "u8g2_ll_hvline_horizontal_right_lsb", "u8x8_cad_001", "", COM_4WSPI|COM_3WSPI|COM_6800|COM_8080, + "", /* is_generate_u8g2_class= */ 1, + { + { "256x64_raystar" }, + { NULL } + } + }, + { + "ssd1362", 32, 8, "u8g2_ll_hvline_horizontal_right_lsb", "u8x8_cad_ssd13xx_i2c", "i2c", COM_I2C, + "", /* is_generate_u8g2_class= */ 1, + { + { "256x64_raystar" }, + { NULL } + } + }, - { "ld7032", 8, 4, "u8g2_ll_hvline_horizontal_right_lsb", "u8x8_cad_011", "", COM_4WSPI, "", /* is_generate_u8g2_class= */ 1, @@ -1862,6 +1880,7 @@ void do_setup_prototype(FILE *fp, int controller_idx, int display_idx, const cha class U8X8_SSD1306_128X64_4W_SW_SPI : public U8X8 { public: U8X8_SSD1306_128X64_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_001, u8x8_byte_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetupTile(getU8x8(), u8x8_draw_hvtile_vertical_top_lsb); u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); } } @@ -1890,6 +1909,14 @@ void do_u8x8_header(int controller_idx, int display_idx, int interface_idx) fprintf(fp, "%s, ", interface_list[interface_idx].arduino_com_procedure); fprintf(fp, "%s);\n", interface_list[interface_idx].arduino_gpio_procedure); fprintf(fp, " "); + fprintf(fp, "u8x8_SetupTile(getU8x8(), "); + if (strcmp(controller_list[controller_idx].ll_hvline, "u8g2_ll_hvline_vertical_top_lsb" ) == 0 ) { + fprintf(fp, "u8x8_draw_hvtile_vertical_top_lsb"); + }else{ + fprintf(fp, "u8x8_draw_hvtile_horizontal_right_lsb"); + } + fprintf(fp, ");\n"); + fprintf(fp, " "); fprintf(fp, "%s(getU8x8(), ", interface_list[interface_idx].setpin_function); fprintf(fp, "%s);\n", interface_list[interface_idx].pins_plain); fprintf(fp, " }\n"); From f2ab03f5ac6dc07927437c2ae410c84cb08d25c1 Mon Sep 17 00:00:00 2001 From: theeprawn <43965085+theeprawn@users.noreply.github.com> Date: Mon, 2 Nov 2020 21:53:56 +0000 Subject: [PATCH 2/4] Update u8x8.h --- csrc/u8x8.h | 1 - 1 file changed, 1 deletion(-) diff --git a/csrc/u8x8.h b/csrc/u8x8.h index 39b63a034..133bf9871 100644 --- a/csrc/u8x8.h +++ b/csrc/u8x8.h @@ -834,7 +834,6 @@ uint8_t u8x8_d_ssd1306_128x64_vcomh0(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, uint8_t u8x8_d_ssd1306_128x64_alt0(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_ssd1309_128x64_noname0(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_ssd1309_128x64_noname2(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); -uint8_t u8x8_d_ssd1362_256x64_raystar(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_sh1106_128x64_noname(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_sh1106_128x64_vcomh0(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_sh1106_128x64_winstar(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); From abd8766cc5a99ebaf4059bf951b39621260a961a Mon Sep 17 00:00:00 2001 From: theeprawn <43965085+theeprawn@users.noreply.github.com> Date: Thu, 5 Nov 2020 19:56:40 +0000 Subject: [PATCH 3/4] Update u8x8_d_ssd1362_256x64.c --- csrc/u8x8_d_ssd1362_256x64.c | 44 +++++++++++++++++------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/csrc/u8x8_d_ssd1362_256x64.c b/csrc/u8x8_d_ssd1362_256x64.c index 4a21f1cee..ed39fc8a4 100644 --- a/csrc/u8x8_d_ssd1362_256x64.c +++ b/csrc/u8x8_d_ssd1362_256x64.c @@ -1,6 +1,6 @@ /* - u8x8_d_ssd1362.c + u8x8_d_ssd1362_256x64.c Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/) @@ -38,21 +38,21 @@ #include "u8x8.h" #ifdef U8X8_WITH_SET_GREY -static uint8_t u8x8_d_ssd1362_grey_level=0xff; /* 2px 16 grey levels */ +static uint8_t u8x8_d_ssd1362_256x64_grey_level=0xff; /* 2px 16 grey levels */ #endif -static uint8_t u8x8_d_ssd1362_8px_byte_conversion(u8x8_t *u8x8, uint8_t pixel_byte, uint8_t *buf){ /* input: one byte 8px; output: four bytes 8px 4bit grey */ +static uint8_t u8x8_d_ssd1362_256x64_8px_byte_conversion(u8x8_t *u8x8, uint8_t pixel_byte, uint8_t *buf){ /* input: one byte 8px; output: four bytes 8px 4bit grey */ #ifdef U8X8_WITH_SET_GREY - buf[0] = u8x8_d_ssd1362_grey_level; + buf[0] = u8x8_d_ssd1362_256x64_grey_level; if( !(pixel_byte&128) ) buf[0] &= 0x0f; if( !(pixel_byte&64) ) buf[0] &= 0xf0; - buf[1] = u8x8_d_ssd1362_grey_level; + buf[1] = u8x8_d_ssd1362_256x64_grey_level; if( !(pixel_byte&32) ) buf[1] &= 0x0f; if( !(pixel_byte&16) ) buf[1] &= 0xf0; - buf[2] = u8x8_d_ssd1362_grey_level; + buf[2] = u8x8_d_ssd1362_256x64_grey_level; if( !(pixel_byte&8) ) buf[2] &= 0x0f; if( !(pixel_byte&4) ) buf[2] &= 0xf0; - buf[3] = u8x8_d_ssd1362_grey_level; + buf[3] = u8x8_d_ssd1362_256x64_grey_level; if( !(pixel_byte&2) ) buf[3] &= 0x0f; if( !(pixel_byte&1) ) buf[3] &= 0xf0; #else @@ -72,7 +72,7 @@ static uint8_t u8x8_d_ssd1362_8px_byte_conversion(u8x8_t *u8x8, uint8_t pixel_by return 4; } -uint8_t u8x8_d_ssd1362_draw_tile(u8x8_t *u8x8, uint8_t arg_int, void *arg_ptr){ +uint8_t u8x8_d_ssd1362_256x64_draw_tile(u8x8_t *u8x8, uint8_t arg_int, void *arg_ptr){ uint8_t col, row, tile_buffer_width, tile_cnt, copies, i; uint8_t *ptr; static uint8_t buf[4]; /* 4 bytes for a tile - 8px columns */ @@ -98,7 +98,7 @@ uint8_t u8x8_d_ssd1362_draw_tile(u8x8_t *u8x8, uint8_t arg_int, void *arg_ptr){ ptr = ((u8x8_tile_t *)arg_ptr)->tile_ptr; ptr += i * tile_buffer_width; /* loads at start and when tiles repeats */ while ( tile_cnt > 0){ - u8x8_d_ssd1362_8px_byte_conversion(u8x8, *ptr, buf); /* 1 byte mono to 4 byte grey */ + u8x8_d_ssd1362_256x64_8px_byte_conversion(u8x8, *ptr, buf); /* 1 byte mono to 4 byte grey */ u8x8_cad_SendData(u8x8, 4, buf); tile_cnt--; ptr++; @@ -132,14 +132,14 @@ static const u8x8_display_info_t u8x8_ssd1362_256x64_display_info = { /* pixel_height = */ 64 }; -static const uint8_t u8x8_d_ssd1362_powersave0_seq[] = { +static const uint8_t u8x8_d_ssd1362_256x64_powersave0_seq[] = { U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ U8X8_C(0x0af), /* display on - normal mode */ U8X8_END_TRANSFER(), /* disable chip */ U8X8_END() /* end of sequence */ }; -static const uint8_t u8x8_d_ssd1362_powersave1_seq[] = { +static const uint8_t u8x8_d_ssd1362_256x64_powersave1_seq[] = { U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ U8X8_C(0x0ae), /* display off - sleep mode */ U8X8_END_TRANSFER(), /* disable chip */ @@ -170,12 +170,12 @@ static const uint8_t u8x8_d_ssd1362_256x64_raystar_init_seq[] = { U8X8_CA(0xfd, 0x12), /*POR 0x12; 0/4; unlock command */ /// U8X8_CA(0xfd, 0x16), /* lock command */ - U8X8_C(0xae), /*POR; 0/1; display off - sleep mode */ -/// U8X8_C(0xaf), /* display on - normal mode */ U8X8_CAA(0x15, 0x00, 0x7f), /*POR 0x00,0x7f; 0..127,0..127; set column address range(0x15,start,end)*/ U8X8_CAA(0x75, 0x00, 0x3f), /*POR 0x00,0x3f; 0..63,0..63; set row address range(0x75,start,end) */ U8X8_CA(0x81, 0x80), /*POR 0x7f; 0..255; set display contrast */ -#if(1) /* removed as setFlipMode(0) in .begin constructor(s), otherwise display flicks about when processor reset and using u8g2.beginSimple() for silent resets */ +#if(1) /* #if(0) to remove and put setFlipMode(0) after begin constructor, stops display flicks when processor reset and using u8g2.beginSimple() for silent resets */ + U8X8_C(0xae), /*POR; 0/1; display off - sleep mode */ +/// U8X8_C(0xaf), /* display on - normal mode */ /// U8X8_CA(0xa0, 0x40), /*POR 0x40; 0bLS0C0VNA; set remap */ U8X8_CA(0xa0, 0xc3), /* remap flip 0 */ // U8X8_CA(0xa0, 0x01), /* A=0/1; enable column address remap */ @@ -223,13 +223,13 @@ static const uint8_t u8x8_d_ssd1362_256x64_raystar_init_seq[] = { U8X8_END() /* end of sequence */ }; /*=========================================================*/ -uint8_t u8x8_d_ssd1362_common(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { +uint8_t u8x8_d_ssd1362_256x64_common(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { switch(msg){ case U8X8_MSG_DISPLAY_SET_POWER_SAVE: if ( arg_int == 0 ) - u8x8_cad_SendSequence(u8x8, u8x8_d_ssd1362_powersave0_seq); + u8x8_cad_SendSequence(u8x8, u8x8_d_ssd1362_256x64_powersave0_seq); else - u8x8_cad_SendSequence(u8x8, u8x8_d_ssd1362_powersave1_seq); + u8x8_cad_SendSequence(u8x8, u8x8_d_ssd1362_256x64_powersave1_seq); break; #ifdef U8X8_WITH_SET_CONTRAST case U8X8_MSG_DISPLAY_SET_CONTRAST: @@ -241,12 +241,12 @@ uint8_t u8x8_d_ssd1362_common(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void * #endif #ifdef U8X8_WITH_SET_GREY case U8X8_MSG_DISPLAY_SET_GREY: - u8x8_d_ssd1362_grey_level = arg_int>>4; /* device's pixel grey level range from 0 to 15 */ - u8x8_d_ssd1362_grey_level |= (u8x8_d_ssd1362_grey_level<<4); /* 2 pixel mask */ + u8x8_d_ssd1362_256x64_grey_level = arg_int>>4; /* device's pixel grey level range from 0 to 15 */ + u8x8_d_ssd1362_256x64_grey_level |= (u8x8_d_ssd1362_256x64_grey_level<<4); /* 2 pixel mask */ break; #endif case U8X8_MSG_DISPLAY_DRAW_TILE: - u8x8_d_ssd1362_draw_tile(u8x8, arg_int, arg_ptr); + u8x8_d_ssd1362_256x64_draw_tile(u8x8, arg_int, arg_ptr); break; default: return 0; @@ -255,8 +255,6 @@ uint8_t u8x8_d_ssd1362_common(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void * } /*=========================================================*/ uint8_t u8x8_d_ssd1362_256x64_raystar(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { - if (u8x8_d_ssd1362_common(u8x8, msg, arg_int, arg_ptr) != 0) - return 1; switch(msg){ case U8X8_MSG_DISPLAY_SETUP_MEMORY: @@ -276,7 +274,7 @@ uint8_t u8x8_d_ssd1362_256x64_raystar(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int } break; default: - return 0; + return u8x8_d_ssd1362_256x64_common(u8x8, msg, arg_int, arg_ptr); } return 1; } From ffdf3707e6007baee401a5316a188cd3841eab64 Mon Sep 17 00:00:00 2001 From: theeprawn <43965085+theeprawn@users.noreply.github.com> Date: Thu, 5 Nov 2020 19:56:44 +0000 Subject: [PATCH 4/4] Update u8x8_d_sh1122_256x64.c --- csrc/u8x8_d_sh1122_256x64.c | 44 +++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/csrc/u8x8_d_sh1122_256x64.c b/csrc/u8x8_d_sh1122_256x64.c index 4d30eba6c..cf1d2cbc6 100644 --- a/csrc/u8x8_d_sh1122_256x64.c +++ b/csrc/u8x8_d_sh1122_256x64.c @@ -1,6 +1,6 @@ /* - u8x8_d_sh1122.c + u8x8_d_sh1122_256x64.c Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/) @@ -38,21 +38,21 @@ #include "u8x8.h" #ifdef U8X8_WITH_SET_GREY -static uint8_t u8x8_d_sh1122_grey_level=0xff; /* 2px 16 grey levels */ +static uint8_t u8x8_d_sh1122_256x64_grey_level=0xff; /* 2px 16 grey levels */ #endif /*=========================================================*/ -static uint8_t u8x8_d_sh1122_8px_byte_conversion(u8x8_t *u8x8, uint8_t pixel_byte, uint8_t *buf){ /* input: one byte 8px; output: four bytes 8px 4bit grey */ +static uint8_t u8x8_d_sh1122_256x64_8px_byte_conversion(u8x8_t *u8x8, uint8_t pixel_byte, uint8_t *buf){ /* input: one byte 8px; output: four bytes 8px 4bit grey */ #ifdef U8X8_WITH_SET_GREY - buf[0] = u8x8_d_sh1122_grey_level; + buf[0] = u8x8_d_sh1122_256x64_grey_level; if( !(pixel_byte&128) ) buf[0] &= 0x0f; if( !(pixel_byte&64) ) buf[0] &= 0xf0; - buf[1] = u8x8_d_sh1122_grey_level; + buf[1] = u8x8_d_sh1122_256x64_grey_level; if( !(pixel_byte&32) ) buf[1] &= 0x0f; if( !(pixel_byte&16) ) buf[1] &= 0xf0; - buf[2] = u8x8_d_sh1122_grey_level; + buf[2] = u8x8_d_sh1122_256x64_grey_level; if( !(pixel_byte&8) ) buf[2] &= 0x0f; if( !(pixel_byte&4) ) buf[2] &= 0xf0; - buf[3] = u8x8_d_sh1122_grey_level; + buf[3] = u8x8_d_sh1122_256x64_grey_level; if( !(pixel_byte&2) ) buf[3] &= 0x0f; if( !(pixel_byte&1) ) buf[3] &= 0xf0; #else @@ -72,7 +72,7 @@ static uint8_t u8x8_d_sh1122_8px_byte_conversion(u8x8_t *u8x8, uint8_t pixel_byt return 4; } -uint8_t u8x8_d_sh1122_draw_tile(u8x8_t *u8x8, uint8_t arg_int, void *arg_ptr){ +uint8_t u8x8_d_sh1122_256x64_draw_tile(u8x8_t *u8x8, uint8_t arg_int, void *arg_ptr){ uint8_t col, row, tile_buffer_width, tile_cnt, copies, i; uint8_t *ptr; static uint8_t buf[4]; /* 4 bytes for a tile - 8px columns */ @@ -82,8 +82,6 @@ uint8_t u8x8_d_sh1122_draw_tile(u8x8_t *u8x8, uint8_t arg_int, void *arg_ptr){ col += u8x8->x_offset; row = (((u8x8_tile_t *)arg_ptr)->y_pos); row *= 8; /* 1px per row - 8px per tile = 8 rows */ -// tile_cnt = ((u8x8_tile_t *)arg_ptr)->cnt; /* number of tiles to send to display */ -// ptr = ((u8x8_tile_t *)arg_ptr)->tile_ptr; /* buffer pointer to 1st tile to send to display */ tile_buffer_width = ((u8x8_tile_t *)arg_ptr)->buffer_width; /* tile width of buffer */ u8x8_cad_StartTransfer(u8x8); @@ -97,7 +95,7 @@ uint8_t u8x8_d_sh1122_draw_tile(u8x8_t *u8x8, uint8_t arg_int, void *arg_ptr){ tile_cnt = ((u8x8_tile_t *)arg_ptr)->cnt; /* number of tiles to send */ ptr = ((u8x8_tile_t *)arg_ptr)->tile_ptr + i * tile_buffer_width; /* loads at start and when tiles repeats */ while ( tile_cnt > 0){ - u8x8_d_sh1122_8px_byte_conversion(u8x8, *ptr, buf); /* 1 byte mono to 4 byte grey */ + u8x8_d_sh1122_256x64_8px_byte_conversion(u8x8, *ptr, buf); /* 1 byte mono to 4 byte grey */ u8x8_cad_SendData(u8x8, 4, buf); tile_cnt--; ptr++; @@ -132,14 +130,14 @@ static const u8x8_display_info_t u8x8_sh1122_256x64_display_info = { /* pixel_height = */ 64 }; -static const uint8_t u8x8_d_sh1122_powersave0_seq[] = { +static const uint8_t u8x8_d_sh1122_256x64_powersave0_seq[] = { U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ U8X8_C(0xaf), /* display on - normal mode */ U8X8_END_TRANSFER(), /* disable chip */ U8X8_END() /* end of sequence */ }; -static const uint8_t u8x8_d_sh1122_powersave1_seq[] = { +static const uint8_t u8x8_d_sh1122_256x64_powersave1_seq[] = { U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ U8X8_C(0xae), /* display off - some commands only work when display off! */ U8X8_END_TRANSFER(), /* disable chip */ @@ -170,13 +168,13 @@ static const uint8_t u8x8_d_sh1122_256x64_midas_init_seq[] = { U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ U8X8_DLY(1), - U8X8_C(0xae), /*POR 0xae; 0/1; display off - some commands only work when display off! */ + U8X8_C(0xae), /*POR 0xae; 0/1; display off - some setup commands only work when display off! */ /// U8X8_C(0xaf), /* display on - normal mode */ U8X8_C(0x00), /*POR 0x00; 0x0n 0..15 Nn=N*16+n=0..127; column RAM address */ U8X8_C(0x10), /*POR 0x10; 0x1N 0..7 Nn=N*16+n=0..127; column RAM address */ U8X8_CA(0xb0, 0x00), /*POR 0x00; 0..63; row RAM address */ U8X8_CA(0xd3, 0x00), /*POR 0x00; 0..63; set display offset - COM vertical shift */ -#if(1) /* removed as setFlipMode(0) in .begin constructor(s), otherwise display flicks about when processor reset and using u8g2.beginSimple() for silent resets */ +#if(1) /* #if(0) to remove and put setFlipMode(0) after begin constructor, stops display flicks when processor reset and using u8g2.beginSimple() for silent resets */ U8X8_C(0x40), /*POR 0x40; 0..63; display start line - RAM vertical shift */ U8X8_C(0xa0), /*POR 0xa0; 0/1; enable right rotation */ /// U8X8_C(0xa1), /* enable left rotation */ @@ -213,13 +211,13 @@ static const uint8_t u8x8_d_sh1122_256x64_midas_init_seq[] = { U8X8_END() /* end of sequence */ }; /*=========================================================*/ -uint8_t u8x8_d_sh1122_common(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { +uint8_t u8x8_d_sh1122_256x64_common(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { switch(msg) { case U8X8_MSG_DISPLAY_SET_POWER_SAVE: if ( arg_int == 0 ) - u8x8_cad_SendSequence(u8x8, u8x8_d_sh1122_powersave0_seq); + u8x8_cad_SendSequence(u8x8, u8x8_d_sh1122_256x64_powersave0_seq); else - u8x8_cad_SendSequence(u8x8, u8x8_d_sh1122_powersave1_seq); + u8x8_cad_SendSequence(u8x8, u8x8_d_sh1122_256x64_powersave1_seq); break; #ifdef U8X8_WITH_SET_CONTRAST case U8X8_MSG_DISPLAY_SET_CONTRAST: @@ -231,12 +229,12 @@ uint8_t u8x8_d_sh1122_common(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *a #endif #ifdef U8X8_WITH_SET_GREY case U8X8_MSG_DISPLAY_SET_GREY: - u8x8_d_sh1122_grey_level = arg_int>>4; /* device's pixel grey level range from 0 to 15 */ - u8x8_d_sh1122_grey_level |= (u8x8_d_sh1122_grey_level<<4); /* 2 pixel mask */ + u8x8_d_sh1122_256x64_grey_level = arg_int>>4; /* device's pixel grey level range from 0 to 15 */ + u8x8_d_sh1122_256x64_grey_level |= (u8x8_d_sh1122_256x64_grey_level<<4); /* 2 pixel mask */ break; #endif case U8X8_MSG_DISPLAY_DRAW_TILE: - u8x8_d_sh1122_draw_tile(u8x8, arg_int, arg_ptr); + u8x8_d_sh1122_256x64_draw_tile(u8x8, arg_int, arg_ptr); break; default: return 0; @@ -245,8 +243,6 @@ uint8_t u8x8_d_sh1122_common(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *a } /*=========================================================*/ uint8_t u8x8_d_sh1122_256x64_midas(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { - if (u8x8_d_sh1122_common(u8x8, msg, arg_int, arg_ptr) != 0) - return 1; switch(msg) { case U8X8_MSG_DISPLAY_SETUP_MEMORY: @@ -266,7 +262,7 @@ uint8_t u8x8_d_sh1122_256x64_midas(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, v } break; default: - return 0; + return u8x8_d_sh1122_256x64_common(u8x8, msg, arg_int, arg_ptr); } return 1; }