From bfbf9d0f0b2ecb31fb8fdda7f37aaad56bc18999 Mon Sep 17 00:00:00 2001 From: olikraus Date: Sun, 5 Feb 2017 11:45:12 +0100 Subject: [PATCH] 2.13.4 --- examples/page_buffer/U8g2Logo/U8g2Logo.ino | 2 +- examples/u8x8/HelloWorld/HelloWorld.ino | 2 +- library.properties | 2 +- src/U8g2lib.h | 216 ++++++++++----------- src/U8x8lib.cpp | 19 +- src/U8x8lib.h | 74 +++---- src/clib/u8x8.h | 2 +- src/clib/u8x8_d_ssd1607_200x200.c | 50 ++--- 8 files changed, 194 insertions(+), 173 deletions(-) diff --git a/examples/page_buffer/U8g2Logo/U8g2Logo.ino b/examples/page_buffer/U8g2Logo/U8g2Logo.ino index b78a9944..15e09fab 100644 --- a/examples/page_buffer/U8g2Logo/U8g2Logo.ino +++ b/examples/page_buffer/U8g2Logo/U8g2Logo.ino @@ -242,6 +242,6 @@ void loop(void) { drawLogo(); drawURL(); } while ( u8g2.nextPage() ); - //delay(1000); + delay(4000); } diff --git a/examples/u8x8/HelloWorld/HelloWorld.ino b/examples/u8x8/HelloWorld/HelloWorld.ino index bd24e51a..c1583f6e 100644 --- a/examples/u8x8/HelloWorld/HelloWorld.ino +++ b/examples/u8x8/HelloWorld/HelloWorld.ino @@ -112,7 +112,7 @@ //U8X8_UC1611_EA_DOGXL240_2ND_HW_I2C u8x8(/* reset=*/ 8); // Due, 2nd I2C, DOGXL240 Test Board //U8X8_UC1611_EA_DOGXL240_4W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8X8_SSD1606_172X72_4W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display -U8X8_SSD1607_200X200_4W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8X8_SSD1607_200X200_4W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display // End of constructor list diff --git a/library.properties b/library.properties index 5a1f8d1b..f71066e7 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=U8g2 -version=2.13.3 +version=2.13.4 author=oliver maintainer=oliver sentence=Monochrome LCD, OLED and eInk Library. Display controller: SSD1305, SSD1306, SSD1309, SSD1322, SSD1325, SSD1327, SSD1606, SSD1607, SH1106, T6963, RA8835, LC7981, PCD8544, PCF8812, UC1604, UC1608, UC1610, UC1611, UC1701, ST7565, ST7567, NT7534, IST3020, ST7920, LD7032, KS0108. Interfaces: I2C, SPI, Parallel. diff --git a/src/U8g2lib.h b/src/U8g2lib.h index d169ba40..c3947423 100644 --- a/src/U8g2lib.h +++ b/src/U8g2lib.h @@ -385,9 +385,9 @@ class U8G2_SSD1305_128X32_NONAME_1_SW_I2C : public U8G2 { } }; class U8G2_SSD1305_128X32_NONAME_1_HW_I2C : public U8G2 { - public: U8G2_SSD1305_128X32_NONAME_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1305_128X32_NONAME_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_ssd1305_i2c_128x32_noname_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1305_128X32_NONAME_1_2ND_HW_I2C : public U8G2 { @@ -403,9 +403,9 @@ class U8G2_SSD1305_128X32_NONAME_2_SW_I2C : public U8G2 { } }; class U8G2_SSD1305_128X32_NONAME_2_HW_I2C : public U8G2 { - public: U8G2_SSD1305_128X32_NONAME_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1305_128X32_NONAME_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_ssd1305_i2c_128x32_noname_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1305_128X32_NONAME_2_2ND_HW_I2C : public U8G2 { @@ -421,9 +421,9 @@ class U8G2_SSD1305_128X32_NONAME_F_SW_I2C : public U8G2 { } }; class U8G2_SSD1305_128X32_NONAME_F_HW_I2C : public U8G2 { - public: U8G2_SSD1305_128X32_NONAME_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1305_128X32_NONAME_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_ssd1305_i2c_128x32_noname_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1305_128X32_NONAME_F_2ND_HW_I2C : public U8G2 { @@ -619,9 +619,9 @@ class U8G2_SSD1306_128X64_NONAME_1_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_128X64_NONAME_1_HW_I2C : public U8G2 { - public: U8G2_SSD1306_128X64_NONAME_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_128X64_NONAME_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_ssd1306_i2c_128x64_noname_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_128X64_NONAME_1_2ND_HW_I2C : public U8G2 { @@ -637,9 +637,9 @@ class U8G2_SSD1306_128X64_VCOMH0_1_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_128X64_VCOMH0_1_HW_I2C : public U8G2 { - public: U8G2_SSD1306_128X64_VCOMH0_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_128X64_VCOMH0_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_ssd1306_i2c_128x64_vcomh0_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_128X64_VCOMH0_1_2ND_HW_I2C : public U8G2 { @@ -655,9 +655,9 @@ class U8G2_SSD1306_128X64_NONAME_2_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_128X64_NONAME_2_HW_I2C : public U8G2 { - public: U8G2_SSD1306_128X64_NONAME_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_128X64_NONAME_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_ssd1306_i2c_128x64_noname_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_128X64_NONAME_2_2ND_HW_I2C : public U8G2 { @@ -673,9 +673,9 @@ class U8G2_SSD1306_128X64_VCOMH0_2_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_128X64_VCOMH0_2_HW_I2C : public U8G2 { - public: U8G2_SSD1306_128X64_VCOMH0_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_128X64_VCOMH0_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_ssd1306_i2c_128x64_vcomh0_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_128X64_VCOMH0_2_2ND_HW_I2C : public U8G2 { @@ -691,9 +691,9 @@ class U8G2_SSD1306_128X64_NONAME_F_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_128X64_NONAME_F_HW_I2C : public U8G2 { - public: U8G2_SSD1306_128X64_NONAME_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_128X64_NONAME_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_ssd1306_i2c_128x64_noname_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_128X64_NONAME_F_2ND_HW_I2C : public U8G2 { @@ -709,9 +709,9 @@ class U8G2_SSD1306_128X64_VCOMH0_F_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_128X64_VCOMH0_F_HW_I2C : public U8G2 { - public: U8G2_SSD1306_128X64_VCOMH0_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_128X64_VCOMH0_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_ssd1306_i2c_128x64_vcomh0_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_128X64_VCOMH0_F_2ND_HW_I2C : public U8G2 { @@ -907,9 +907,9 @@ class U8G2_SH1106_128X64_NONAME_1_SW_I2C : public U8G2 { } }; class U8G2_SH1106_128X64_NONAME_1_HW_I2C : public U8G2 { - public: U8G2_SH1106_128X64_NONAME_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SH1106_128X64_NONAME_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_sh1106_i2c_128x64_noname_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SH1106_128X64_NONAME_1_2ND_HW_I2C : public U8G2 { @@ -925,9 +925,9 @@ class U8G2_SH1106_128X64_VCOMH0_1_SW_I2C : public U8G2 { } }; class U8G2_SH1106_128X64_VCOMH0_1_HW_I2C : public U8G2 { - public: U8G2_SH1106_128X64_VCOMH0_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SH1106_128X64_VCOMH0_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_sh1106_i2c_128x64_vcomh0_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SH1106_128X64_VCOMH0_1_2ND_HW_I2C : public U8G2 { @@ -943,9 +943,9 @@ class U8G2_SH1106_128X64_NONAME_2_SW_I2C : public U8G2 { } }; class U8G2_SH1106_128X64_NONAME_2_HW_I2C : public U8G2 { - public: U8G2_SH1106_128X64_NONAME_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SH1106_128X64_NONAME_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_sh1106_i2c_128x64_noname_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SH1106_128X64_NONAME_2_2ND_HW_I2C : public U8G2 { @@ -961,9 +961,9 @@ class U8G2_SH1106_128X64_VCOMH0_2_SW_I2C : public U8G2 { } }; class U8G2_SH1106_128X64_VCOMH0_2_HW_I2C : public U8G2 { - public: U8G2_SH1106_128X64_VCOMH0_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SH1106_128X64_VCOMH0_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_sh1106_i2c_128x64_vcomh0_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SH1106_128X64_VCOMH0_2_2ND_HW_I2C : public U8G2 { @@ -979,9 +979,9 @@ class U8G2_SH1106_128X64_NONAME_F_SW_I2C : public U8G2 { } }; class U8G2_SH1106_128X64_NONAME_F_HW_I2C : public U8G2 { - public: U8G2_SH1106_128X64_NONAME_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SH1106_128X64_NONAME_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_sh1106_i2c_128x64_noname_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SH1106_128X64_NONAME_F_2ND_HW_I2C : public U8G2 { @@ -997,9 +997,9 @@ class U8G2_SH1106_128X64_VCOMH0_F_SW_I2C : public U8G2 { } }; class U8G2_SH1106_128X64_VCOMH0_F_HW_I2C : public U8G2 { - public: U8G2_SH1106_128X64_VCOMH0_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SH1106_128X64_VCOMH0_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_sh1106_i2c_128x64_vcomh0_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SH1106_128X64_VCOMH0_F_2ND_HW_I2C : public U8G2 { @@ -1105,9 +1105,9 @@ class U8G2_SSD1306_128X32_UNIVISION_1_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C : public U8G2 { - public: U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_128X32_UNIVISION_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_ssd1306_i2c_128x32_univision_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_128X32_UNIVISION_1_2ND_HW_I2C : public U8G2 { @@ -1123,9 +1123,9 @@ class U8G2_SSD1306_128X32_UNIVISION_2_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_128X32_UNIVISION_2_HW_I2C : public U8G2 { - public: U8G2_SSD1306_128X32_UNIVISION_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_128X32_UNIVISION_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_ssd1306_i2c_128x32_univision_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_128X32_UNIVISION_2_2ND_HW_I2C : public U8G2 { @@ -1141,9 +1141,9 @@ class U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C : public U8G2 { - public: U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_128X32_UNIVISION_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_ssd1306_i2c_128x32_univision_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_128X32_UNIVISION_F_2ND_HW_I2C : public U8G2 { @@ -1249,9 +1249,9 @@ class U8G2_SSD1306_64X48_ER_1_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_64X48_ER_1_HW_I2C : public U8G2 { - public: U8G2_SSD1306_64X48_ER_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_64X48_ER_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_ssd1306_i2c_64x48_er_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_64X48_ER_1_2ND_HW_I2C : public U8G2 { @@ -1267,9 +1267,9 @@ class U8G2_SSD1306_64X48_ER_2_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_64X48_ER_2_HW_I2C : public U8G2 { - public: U8G2_SSD1306_64X48_ER_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_64X48_ER_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_ssd1306_i2c_64x48_er_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_64X48_ER_2_2ND_HW_I2C : public U8G2 { @@ -1285,9 +1285,9 @@ class U8G2_SSD1306_64X48_ER_F_SW_I2C : public U8G2 { } }; class U8G2_SSD1306_64X48_ER_F_HW_I2C : public U8G2 { - public: U8G2_SSD1306_64X48_ER_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1306_64X48_ER_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_ssd1306_i2c_64x48_er_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1306_64X48_ER_F_2ND_HW_I2C : public U8G2 { @@ -1375,9 +1375,9 @@ class U8G2_SSD1309_128X64_NONAME_1_SW_I2C : public U8G2 { } }; class U8G2_SSD1309_128X64_NONAME_1_HW_I2C : public U8G2 { - public: U8G2_SSD1309_128X64_NONAME_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1309_128X64_NONAME_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_ssd1309_i2c_128x64_noname_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1309_128X64_NONAME_1_2ND_HW_I2C : public U8G2 { @@ -1393,9 +1393,9 @@ class U8G2_SSD1309_128X64_NONAME_2_SW_I2C : public U8G2 { } }; class U8G2_SSD1309_128X64_NONAME_2_HW_I2C : public U8G2 { - public: U8G2_SSD1309_128X64_NONAME_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1309_128X64_NONAME_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_ssd1309_i2c_128x64_noname_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1309_128X64_NONAME_2_2ND_HW_I2C : public U8G2 { @@ -1411,9 +1411,9 @@ class U8G2_SSD1309_128X64_NONAME_F_SW_I2C : public U8G2 { } }; class U8G2_SSD1309_128X64_NONAME_F_HW_I2C : public U8G2 { - public: U8G2_SSD1309_128X64_NONAME_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1309_128X64_NONAME_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_ssd1309_i2c_128x64_noname_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1309_128X64_NONAME_F_2ND_HW_I2C : public U8G2 { @@ -1519,9 +1519,9 @@ class U8G2_SSD1325_NHD_128X64_1_SW_I2C : public U8G2 { } }; class U8G2_SSD1325_NHD_128X64_1_HW_I2C : public U8G2 { - public: U8G2_SSD1325_NHD_128X64_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1325_NHD_128X64_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_ssd1325_i2c_nhd_128x64_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1325_NHD_128X64_1_2ND_HW_I2C : public U8G2 { @@ -1537,9 +1537,9 @@ class U8G2_SSD1325_NHD_128X64_2_SW_I2C : public U8G2 { } }; class U8G2_SSD1325_NHD_128X64_2_HW_I2C : public U8G2 { - public: U8G2_SSD1325_NHD_128X64_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1325_NHD_128X64_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_ssd1325_i2c_nhd_128x64_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1325_NHD_128X64_2_2ND_HW_I2C : public U8G2 { @@ -1555,9 +1555,9 @@ class U8G2_SSD1325_NHD_128X64_F_SW_I2C : public U8G2 { } }; class U8G2_SSD1325_NHD_128X64_F_HW_I2C : public U8G2 { - public: U8G2_SSD1325_NHD_128X64_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1325_NHD_128X64_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_ssd1325_i2c_nhd_128x64_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1325_NHD_128X64_F_2ND_HW_I2C : public U8G2 { @@ -1663,9 +1663,9 @@ class U8G2_SSD1327_SEEED_96X96_1_SW_I2C : public U8G2 { } }; class U8G2_SSD1327_SEEED_96X96_1_HW_I2C : public U8G2 { - public: U8G2_SSD1327_SEEED_96X96_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1327_SEEED_96X96_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_ssd1327_i2c_seeed_96x96_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1327_SEEED_96X96_1_2ND_HW_I2C : public U8G2 { @@ -1681,9 +1681,9 @@ class U8G2_SSD1327_SEEED_96X96_2_SW_I2C : public U8G2 { } }; class U8G2_SSD1327_SEEED_96X96_2_HW_I2C : public U8G2 { - public: U8G2_SSD1327_SEEED_96X96_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1327_SEEED_96X96_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_ssd1327_i2c_seeed_96x96_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1327_SEEED_96X96_2_2ND_HW_I2C : public U8G2 { @@ -1699,9 +1699,9 @@ class U8G2_SSD1327_SEEED_96X96_F_SW_I2C : public U8G2 { } }; class U8G2_SSD1327_SEEED_96X96_F_HW_I2C : public U8G2 { - public: U8G2_SSD1327_SEEED_96X96_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_SSD1327_SEEED_96X96_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_ssd1327_i2c_seeed_96x96_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_SSD1327_SEEED_96X96_F_2ND_HW_I2C : public U8G2 { @@ -1753,9 +1753,9 @@ class U8G2_LD7032_60X32_1_SW_I2C : public U8G2 { } }; class U8G2_LD7032_60X32_1_HW_I2C : public U8G2 { - public: U8G2_LD7032_60X32_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_LD7032_60X32_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_ld7032_i2c_60x32_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_LD7032_60X32_1_2ND_HW_I2C : public U8G2 { @@ -1771,9 +1771,9 @@ class U8G2_LD7032_60X32_2_SW_I2C : public U8G2 { } }; class U8G2_LD7032_60X32_2_HW_I2C : public U8G2 { - public: U8G2_LD7032_60X32_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_LD7032_60X32_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_ld7032_i2c_60x32_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_LD7032_60X32_2_2ND_HW_I2C : public U8G2 { @@ -1789,9 +1789,9 @@ class U8G2_LD7032_60X32_F_SW_I2C : public U8G2 { } }; class U8G2_LD7032_60X32_F_HW_I2C : public U8G2 { - public: U8G2_LD7032_60X32_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_LD7032_60X32_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_ld7032_i2c_60x32_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_LD7032_60X32_F_2ND_HW_I2C : public U8G2 { @@ -2329,9 +2329,9 @@ class U8G2_UC1604_JLX19264_1_SW_I2C : public U8G2 { } }; class U8G2_UC1604_JLX19264_1_HW_I2C : public U8G2 { - public: U8G2_UC1604_JLX19264_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1604_JLX19264_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_uc1604_i2c_jlx19264_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1604_JLX19264_1_2ND_HW_I2C : public U8G2 { @@ -2347,9 +2347,9 @@ class U8G2_UC1604_JLX19264_2_SW_I2C : public U8G2 { } }; class U8G2_UC1604_JLX19264_2_HW_I2C : public U8G2 { - public: U8G2_UC1604_JLX19264_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1604_JLX19264_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_uc1604_i2c_jlx19264_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1604_JLX19264_2_2ND_HW_I2C : public U8G2 { @@ -2365,9 +2365,9 @@ class U8G2_UC1604_JLX19264_F_SW_I2C : public U8G2 { } }; class U8G2_UC1604_JLX19264_F_HW_I2C : public U8G2 { - public: U8G2_UC1604_JLX19264_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1604_JLX19264_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_uc1604_i2c_jlx19264_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1604_JLX19264_F_2ND_HW_I2C : public U8G2 { @@ -2437,9 +2437,9 @@ class U8G2_UC1608_ERC24064_1_SW_I2C : public U8G2 { } }; class U8G2_UC1608_ERC24064_1_HW_I2C : public U8G2 { - public: U8G2_UC1608_ERC24064_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1608_ERC24064_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_uc1608_i2c_erc24064_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1608_ERC24064_1_2ND_HW_I2C : public U8G2 { @@ -2455,9 +2455,9 @@ class U8G2_UC1608_ERC24064_2_SW_I2C : public U8G2 { } }; class U8G2_UC1608_ERC24064_2_HW_I2C : public U8G2 { - public: U8G2_UC1608_ERC24064_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1608_ERC24064_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_uc1608_i2c_erc24064_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1608_ERC24064_2_2ND_HW_I2C : public U8G2 { @@ -2473,9 +2473,9 @@ class U8G2_UC1608_ERC24064_F_SW_I2C : public U8G2 { } }; class U8G2_UC1608_ERC24064_F_HW_I2C : public U8G2 { - public: U8G2_UC1608_ERC24064_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1608_ERC24064_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_uc1608_i2c_erc24064_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1608_ERC24064_F_2ND_HW_I2C : public U8G2 { @@ -2545,9 +2545,9 @@ class U8G2_UC1608_240X128_1_SW_I2C : public U8G2 { } }; class U8G2_UC1608_240X128_1_HW_I2C : public U8G2 { - public: U8G2_UC1608_240X128_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1608_240X128_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_uc1608_i2c_240x128_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1608_240X128_1_2ND_HW_I2C : public U8G2 { @@ -2563,9 +2563,9 @@ class U8G2_UC1608_240X128_2_SW_I2C : public U8G2 { } }; class U8G2_UC1608_240X128_2_HW_I2C : public U8G2 { - public: U8G2_UC1608_240X128_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1608_240X128_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_uc1608_i2c_240x128_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1608_240X128_2_2ND_HW_I2C : public U8G2 { @@ -2581,9 +2581,9 @@ class U8G2_UC1608_240X128_F_SW_I2C : public U8G2 { } }; class U8G2_UC1608_240X128_F_HW_I2C : public U8G2 { - public: U8G2_UC1608_240X128_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1608_240X128_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_uc1608_i2c_240x128_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1608_240X128_F_2ND_HW_I2C : public U8G2 { @@ -2653,9 +2653,9 @@ class U8G2_UC1610_EA_DOGXL160_1_SW_I2C : public U8G2 { } }; class U8G2_UC1610_EA_DOGXL160_1_HW_I2C : public U8G2 { - public: U8G2_UC1610_EA_DOGXL160_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1610_EA_DOGXL160_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_uc1610_i2c_ea_dogxl160_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1610_EA_DOGXL160_1_2ND_HW_I2C : public U8G2 { @@ -2671,9 +2671,9 @@ class U8G2_UC1610_EA_DOGXL160_2_SW_I2C : public U8G2 { } }; class U8G2_UC1610_EA_DOGXL160_2_HW_I2C : public U8G2 { - public: U8G2_UC1610_EA_DOGXL160_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1610_EA_DOGXL160_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_uc1610_i2c_ea_dogxl160_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1610_EA_DOGXL160_2_2ND_HW_I2C : public U8G2 { @@ -2689,9 +2689,9 @@ class U8G2_UC1610_EA_DOGXL160_F_SW_I2C : public U8G2 { } }; class U8G2_UC1610_EA_DOGXL160_F_HW_I2C : public U8G2 { - public: U8G2_UC1610_EA_DOGXL160_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1610_EA_DOGXL160_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_uc1610_i2c_ea_dogxl160_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1610_EA_DOGXL160_F_2ND_HW_I2C : public U8G2 { @@ -2761,9 +2761,9 @@ class U8G2_UC1611_EA_DOGM240_1_SW_I2C : public U8G2 { } }; class U8G2_UC1611_EA_DOGM240_1_HW_I2C : public U8G2 { - public: U8G2_UC1611_EA_DOGM240_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1611_EA_DOGM240_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_uc1611_i2c_ea_dogm240_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1611_EA_DOGM240_1_2ND_HW_I2C : public U8G2 { @@ -2779,9 +2779,9 @@ class U8G2_UC1611_EA_DOGM240_2_SW_I2C : public U8G2 { } }; class U8G2_UC1611_EA_DOGM240_2_HW_I2C : public U8G2 { - public: U8G2_UC1611_EA_DOGM240_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1611_EA_DOGM240_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_uc1611_i2c_ea_dogm240_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1611_EA_DOGM240_2_2ND_HW_I2C : public U8G2 { @@ -2797,9 +2797,9 @@ class U8G2_UC1611_EA_DOGM240_F_SW_I2C : public U8G2 { } }; class U8G2_UC1611_EA_DOGM240_F_HW_I2C : public U8G2 { - public: U8G2_UC1611_EA_DOGM240_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1611_EA_DOGM240_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_uc1611_i2c_ea_dogm240_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1611_EA_DOGM240_F_2ND_HW_I2C : public U8G2 { @@ -2869,9 +2869,9 @@ class U8G2_UC1611_EA_DOGXL240_1_SW_I2C : public U8G2 { } }; class U8G2_UC1611_EA_DOGXL240_1_HW_I2C : public U8G2 { - public: U8G2_UC1611_EA_DOGXL240_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1611_EA_DOGXL240_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_uc1611_i2c_ea_dogxl240_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1611_EA_DOGXL240_1_2ND_HW_I2C : public U8G2 { @@ -2887,9 +2887,9 @@ class U8G2_UC1611_EA_DOGXL240_2_SW_I2C : public U8G2 { } }; class U8G2_UC1611_EA_DOGXL240_2_HW_I2C : public U8G2 { - public: U8G2_UC1611_EA_DOGXL240_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1611_EA_DOGXL240_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_uc1611_i2c_ea_dogxl240_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1611_EA_DOGXL240_2_2ND_HW_I2C : public U8G2 { @@ -2905,9 +2905,9 @@ class U8G2_UC1611_EA_DOGXL240_F_SW_I2C : public U8G2 { } }; class U8G2_UC1611_EA_DOGXL240_F_HW_I2C : public U8G2 { - public: U8G2_UC1611_EA_DOGXL240_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_UC1611_EA_DOGXL240_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_uc1611_i2c_ea_dogxl240_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_UC1611_EA_DOGXL240_F_2ND_HW_I2C : public U8G2 { @@ -3625,9 +3625,9 @@ class U8G2_ST7588_JLX12864_1_SW_I2C : public U8G2 { } }; class U8G2_ST7588_JLX12864_1_HW_I2C : public U8G2 { - public: U8G2_ST7588_JLX12864_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_ST7588_JLX12864_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_st7588_i2c_jlx12864_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_ST7588_JLX12864_1_2ND_HW_I2C : public U8G2 { @@ -3643,9 +3643,9 @@ class U8G2_ST7588_JLX12864_2_SW_I2C : public U8G2 { } }; class U8G2_ST7588_JLX12864_2_HW_I2C : public U8G2 { - public: U8G2_ST7588_JLX12864_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_ST7588_JLX12864_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_st7588_i2c_jlx12864_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_ST7588_JLX12864_2_2ND_HW_I2C : public U8G2 { @@ -3661,9 +3661,9 @@ class U8G2_ST7588_JLX12864_F_SW_I2C : public U8G2 { } }; class U8G2_ST7588_JLX12864_F_HW_I2C : public U8G2 { - public: U8G2_ST7588_JLX12864_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + public: U8G2_ST7588_JLX12864_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_st7588_i2c_jlx12864_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8G2_ST7588_JLX12864_F_2ND_HW_I2C : public U8G2 { diff --git a/src/U8x8lib.cpp b/src/U8x8lib.cpp index dcf1e3f3..41dae5c5 100644 --- a/src/U8x8lib.cpp +++ b/src/U8x8lib.cpp @@ -313,7 +313,7 @@ extern "C" uint8_t u8x8_byte_arduino_4wire_sw_spi(u8x8_t *u8x8, uint8_t msg, uin arduino_data_port = portOutputRegister(digitalPinToPort(u8x8->pins[U8X8_PIN_SPI_DATA])); arduino_data_mask = digitalPinToBitMask(u8x8->pins[U8X8_PIN_SPI_DATA]); arduino_data_n_mask = ~arduino_data_mask; - + break; case U8X8_MSG_BYTE_END_TRANSFER: u8x8->gpio_and_delay_cb(u8x8, U8X8_MSG_DELAY_NANO, u8x8->display_info->pre_chip_disable_wait_ns, NULL); @@ -443,7 +443,20 @@ extern "C" uint8_t u8x8_byte_arduino_hw_i2c(U8X8_UNUSED u8x8_t *u8x8, U8X8_UNUSE Wire.write((uint8_t *)arg_ptr, (int)arg_int); break; case U8X8_MSG_BYTE_INIT: +#ifdef ESP8266 + /* for ESP8266, Wire.begin has two more arguments: clock and data */ + if ( u8x8->pins[U8X8_PIN_I2C_CLOCK] != U8X8_PIN_NONE && u8x8->pins[U8X8_PIN_I2C_DATA] != U8X8_PIN_NONE ) + { + // second argument for the wire lib is the clock pin. In u8g2, the first argument of the clock pin in the clock/data pair + Wire.begin(u8x8->pins[U8X8_PIN_I2C_DATA] , u8x8->pins[U8X8_PIN_I2C_CLOCK]); + } + else + { + Wire.begin(); + } +#else Wire.begin(); +#endif break; case U8X8_MSG_BYTE_SET_DC: break; @@ -866,9 +879,11 @@ void u8x8_Setup_SSD13xx_SW_I2C(u8x8_t *u8x8, u8x8_msg_cb display_cb, uint8_t clo } #endif /* obsolete com specific setup */ -void u8x8_SetPin_HW_I2C(u8x8_t *u8x8, uint8_t reset) +void u8x8_SetPin_HW_I2C(u8x8_t *u8x8, uint8_t reset, uint8_t clock, uint8_t data) { u8x8_SetPin(u8x8, U8X8_PIN_RESET, reset); + u8x8_SetPin(u8x8, U8X8_PIN_I2C_CLOCK, clock); + u8x8_SetPin(u8x8, U8X8_PIN_I2C_DATA, data); } void u8x8_SetPin_8Bit_6800(u8x8_t *u8x8, 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) diff --git a/src/U8x8lib.h b/src/U8x8lib.h index 22bb7151..9ca5b107 100644 --- a/src/U8x8lib.h +++ b/src/U8x8lib.h @@ -99,7 +99,7 @@ void u8x8_SetPin_3Wire_SW_SPI(u8x8_t *u8x8, uint8_t clock, uint8_t data, uint8_t void u8x8_SetPin_4Wire_HW_SPI(u8x8_t *u8x8, uint8_t cs, uint8_t dc, uint8_t reset); void u8x8_SetPin_ST7920_HW_SPI(u8x8_t *u8x8, uint8_t cs, uint8_t reset); void u8x8_SetPin_SW_I2C(u8x8_t *u8x8, uint8_t clock, uint8_t data, uint8_t reset); -void u8x8_SetPin_HW_I2C(u8x8_t *u8x8, uint8_t reset); +void u8x8_SetPin_HW_I2C(u8x8_t *u8x8, uint8_t reset, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE); void u8x8_SetPin_8Bit_6800(u8x8_t *u8x8, 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); void u8x8_SetPin_8Bit_8080(u8x8_t *u8x8, 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 wr, uint8_t cs, uint8_t dc, uint8_t reset); void u8x8_SetPin_KS0108(u8x8_t *u8x8, 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); @@ -281,9 +281,9 @@ class U8X8_SSD1305_128X32_NONAME_SW_I2C : public U8X8 { } }; class U8X8_SSD1305_128X32_NONAME_HW_I2C : public U8X8 { - public: U8X8_SSD1305_128X32_NONAME_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1305_128X32_NONAME_2ND_HW_I2C : public U8X8 { @@ -359,9 +359,9 @@ class U8X8_SSD1306_128X64_NONAME_SW_I2C : public U8X8 { } }; class U8X8_SSD1306_128X64_NONAME_HW_I2C : public U8X8 { - public: U8X8_SSD1306_128X64_NONAME_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_128X64_NONAME_2ND_HW_I2C : public U8X8 { @@ -377,9 +377,9 @@ class U8X8_SSD1306_128X64_VCOMH0_SW_I2C : public U8X8 { } }; class U8X8_SSD1306_128X64_VCOMH0_HW_I2C : public U8X8 { - public: U8X8_SSD1306_128X64_VCOMH0_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_128X64_VCOMH0_2ND_HW_I2C : public U8X8 { @@ -455,9 +455,9 @@ class U8X8_SH1106_128X64_NONAME_SW_I2C : public U8X8 { } }; class U8X8_SH1106_128X64_NONAME_HW_I2C : public U8X8 { - public: U8X8_SH1106_128X64_NONAME_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1106_128X64_NONAME_2ND_HW_I2C : public U8X8 { @@ -473,9 +473,9 @@ class U8X8_SH1106_128X64_VCOMH0_SW_I2C : public U8X8 { } }; class U8X8_SH1106_128X64_VCOMH0_HW_I2C : public U8X8 { - public: U8X8_SH1106_128X64_VCOMH0_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SH1106_128X64_VCOMH0_2ND_HW_I2C : public U8X8 { @@ -521,9 +521,9 @@ class U8X8_SSD1306_128X32_UNIVISION_SW_I2C : public U8X8 { } }; class U8X8_SSD1306_128X32_UNIVISION_HW_I2C : public U8X8 { - public: U8X8_SSD1306_128X32_UNIVISION_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_128X32_UNIVISION_2ND_HW_I2C : public U8X8 { @@ -569,9 +569,9 @@ class U8X8_SSD1306_64X48_ER_SW_I2C : public U8X8 { } }; class U8X8_SSD1306_64X48_ER_HW_I2C : public U8X8 { - public: U8X8_SSD1306_64X48_ER_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1306_64X48_ER_2ND_HW_I2C : public U8X8 { @@ -611,9 +611,9 @@ class U8X8_SSD1309_128X64_NONAME_SW_I2C : public U8X8 { } }; class U8X8_SSD1309_128X64_NONAME_HW_I2C : public U8X8 { - public: U8X8_SSD1309_128X64_NONAME_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : U8X8() { + public: U8X8_SSD1309_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_ssd1309_128x64_noname, u8x8_cad_ssd13xx_i2c, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); - u8x8_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1309_128X64_NONAME_2ND_HW_I2C : public U8X8 { @@ -659,9 +659,9 @@ class U8X8_SSD1325_NHD_128X64_SW_I2C : public U8X8 { } }; class U8X8_SSD1325_NHD_128X64_HW_I2C : public U8X8 { - public: U8X8_SSD1325_NHD_128X64_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1325_NHD_128X64_2ND_HW_I2C : public U8X8 { @@ -707,9 +707,9 @@ class U8X8_SSD1327_SEEED_96X96_SW_I2C : public U8X8 { } }; class U8X8_SSD1327_SEEED_96X96_HW_I2C : public U8X8 { - public: U8X8_SSD1327_SEEED_96X96_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_SSD1327_SEEED_96X96_2ND_HW_I2C : public U8X8 { @@ -737,9 +737,9 @@ class U8X8_LD7032_60X32_SW_I2C : public U8X8 { } }; class U8X8_LD7032_60X32_HW_I2C : public U8X8 { - public: U8X8_LD7032_60X32_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_LD7032_60X32_2ND_HW_I2C : public U8X8 { @@ -929,9 +929,9 @@ class U8X8_UC1604_JLX19264_SW_I2C : public U8X8 { } }; class U8X8_UC1604_JLX19264_HW_I2C : public U8X8 { - public: U8X8_UC1604_JLX19264_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1604_JLX19264_2ND_HW_I2C : public U8X8 { @@ -965,9 +965,9 @@ class U8X8_UC1608_ERC24064_SW_I2C : public U8X8 { } }; class U8X8_UC1608_ERC24064_HW_I2C : public U8X8 { - public: U8X8_UC1608_ERC24064_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1608_ERC24064_2ND_HW_I2C : public U8X8 { @@ -1001,9 +1001,9 @@ class U8X8_UC1608_240X128_SW_I2C : public U8X8 { } }; class U8X8_UC1608_240X128_HW_I2C : public U8X8 { - public: U8X8_UC1608_240X128_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1608_240X128_2ND_HW_I2C : public U8X8 { @@ -1037,9 +1037,9 @@ class U8X8_UC1610_EA_DOGXL160_SW_I2C : public U8X8 { } }; class U8X8_UC1610_EA_DOGXL160_HW_I2C : public U8X8 { - public: U8X8_UC1610_EA_DOGXL160_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1610_EA_DOGXL160_2ND_HW_I2C : public U8X8 { @@ -1073,9 +1073,9 @@ class U8X8_UC1611_EA_DOGM240_SW_I2C : public U8X8 { } }; class U8X8_UC1611_EA_DOGM240_HW_I2C : public U8X8 { - public: U8X8_UC1611_EA_DOGM240_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1611_EA_DOGM240_2ND_HW_I2C : public U8X8 { @@ -1109,9 +1109,9 @@ class U8X8_UC1611_EA_DOGXL240_SW_I2C : public U8X8 { } }; class U8X8_UC1611_EA_DOGXL240_HW_I2C : public U8X8 { - public: U8X8_UC1611_EA_DOGXL240_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_UC1611_EA_DOGXL240_2ND_HW_I2C : public U8X8 { @@ -1361,9 +1361,9 @@ class U8X8_ST7588_JLX12864_SW_I2C : public U8X8 { } }; class U8X8_ST7588_JLX12864_HW_I2C : public U8X8 { - public: U8X8_ST7588_JLX12864_HW_I2C(uint8_t reset = U8X8_PIN_NONE) : 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_SetPin_HW_I2C(getU8x8(), reset); + u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data); } }; class U8X8_ST7588_JLX12864_2ND_HW_I2C : public U8X8 { diff --git a/src/clib/u8x8.h b/src/clib/u8x8.h index e63123da..097e2e2c 100644 --- a/src/clib/u8x8.h +++ b/src/clib/u8x8.h @@ -607,7 +607,7 @@ uint8_t u8x8_byte_3wire_sw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void /* uint8_t u8x8_byte_st7920_sw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); */ void u8x8_byte_set_ks0108_cs(u8x8_t *u8x8, uint8_t arg) U8X8_NOINLINE; uint8_t u8x8_byte_ks0108(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); -uint8_t u8x8_byte_ssd13xx_sw_i2c(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); +uint8_t u8x8_byte_ssd13xx_sw_i2c(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); /* OBSOLETE! */ uint8_t u8x8_byte_sw_i2c(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); diff --git a/src/clib/u8x8_d_ssd1607_200x200.c b/src/clib/u8x8_d_ssd1607_200x200.c index a307e8b9..3b2cc822 100644 --- a/src/clib/u8x8_d_ssd1607_200x200.c +++ b/src/clib/u8x8_d_ssd1607_200x200.c @@ -151,30 +151,30 @@ static const uint8_t u8x8_d_ssd1607_200x200_init_seq[] = { U8X8_A(L(0,0,0,0)), // 0x00 U8X8_A(L(0,0,0,0)), // 0x00 + /* orginal values without 0-0 and 1-1 transition */ /* - U8X8_A(L(0,0,0,0)), // 0x02 - U8X8_A(L(0,0,0,0)), // 0x02 - U8X8_A(L(0,0,0,0)), // 0x01 - U8X8_A(L(0,1,0,0)), // 0x11 - U8X8_A(L(0,1,0,0)), // 0x12 - U8X8_A(L(0,1,0,0)), // 0x12 - U8X8_A(L(0,2,0,0)), // 0x22 - U8X8_A(L(0,2,0,0)), // 0x22 - U8X8_A(L(0,2,1,0)), // 0x66 - U8X8_A(L(0,2,2,0)), // 0x69 - U8X8_A(L(0,2,2,0)), // 0x69 - U8X8_A(L(0,1,2,0)), // 0x59 - U8X8_A(L(0,1,2,0)), // 0x58 - U8X8_A(L(0,1,2,0)), // 0x99 - U8X8_A(L(0,1,2,0)), // 0x99 - U8X8_A(L(0,0,2,0)), // 0x88 - U8X8_A(L(0,0,0,0)), // 0x00 - U8X8_A(L(0,0,0,0)), // 0x00 - U8X8_A(L(0,0,0,0)), // 0x00 - U8X8_A(L(0,0,0,0)), // 0x00 + U8X8_A(L(3,0,0,3)), // 0x02 + U8X8_A(L(3,0,0,3)), // 0x02 + U8X8_A(L(3,0,0,3)), // 0x01 + U8X8_A(L(3,1,0,3)), // 0x11 + U8X8_A(L(3,1,0,3)), // 0x12 + U8X8_A(L(3,1,0,3)), // 0x12 + U8X8_A(L(3,2,0,3)), // 0x22 + U8X8_A(L(3,2,0,3)), // 0x22 + U8X8_A(L(3,2,1,3)), // 0x66 + U8X8_A(L(3,2,2,3)), // 0x69 + U8X8_A(L(3,2,2,3)), // 0x69 + U8X8_A(L(3,1,2,3)), // 0x59 + U8X8_A(L(3,1,2,3)), // 0x58 + U8X8_A(L(3,1,2,3)), // 0x99 + U8X8_A(L(3,1,2,3)), // 0x99 + U8X8_A(L(3,0,2,3)), // 0x88 + U8X8_A(L(3,0,0,3)), // 0x00 + U8X8_A(L(3,0,0,3)), // 0x00 + U8X8_A(L(3,0,0,3)), // 0x00 + U8X8_A(L(3,0,0,3)), // 0x00 */ - /* Timing part of the LUT, 20 Phases with 4 bit each: 10 bytes */ @@ -211,9 +211,12 @@ static const uint8_t u8x8_d_ssd1607_to_display_seq[] = { U8X8_DLY(250), U8X8_DLY(250), U8X8_DLY(250), + U8X8_DLY(250), + U8X8_DLY(250), U8X8_CA(0x22, 0x03), /* disable clock and charge pump */ - U8X8_DLY(200), /* */ + U8X8_DLY(250), + U8X8_DLY(250), U8X8_DLY(100), U8X8_END_TRANSFER(), /* disable chip */ @@ -336,6 +339,8 @@ static uint8_t u8x8_d_ssd1607_200x200_generic(u8x8_t *u8x8, uint8_t msg, uint8_t u8x8_d_helper_display_init(u8x8); u8x8_cad_SendSequence(u8x8, u8x8_d_ssd1607_200x200_init_seq); +#ifdef NOT_USED + /* STRATEGY FOR SSD1606 */ /* special code for the SSD1606... */ /* ensure that the initial buffer is clear and all eInk is set to white */ /* this is done here, because the LUT will be of that kind, that it uses the previous color */ @@ -351,6 +356,7 @@ static uint8_t u8x8_d_ssd1607_200x200_generic(u8x8_t *u8x8, uint8_t msg, uint8_t u8x8_ClearDisplay(u8x8); /* write content to the display */ u8x8_RefreshDisplay(u8x8); +#endif u8x8_ClearDisplay(u8x8); /* write content to the display */