U8glib.h + 2 дисплея 1306

Тема в разделе "Arduino & Shields", создана пользователем Михаил123, 16 май 2022.

  1. Airbus

    Airbus Радиохулиган Модератор

    У него работали как повторители-ему было надо именно так. Если на разных адресах то будут работать независимо. И да там резюками можно напаять разные адреса.
     
  2. b707

    b707 Гуру

    только картинка на всех трех будет одна и та же
     
  3. b707

    b707 Гуру

    три года прошло, как ты появился - и все еще "опыта мало"?
    А знаешь, почему?
    Потому что ты . как что - сразу бежишь на форум за "быстрым ответом".
    и потому ничему не научился за три года. как задавал элементарные вопросы. так и задаешь.
     
  4. parovoZZ

    parovoZZ Гуру

    Резистор всего один. Адресов всего два.
     
  5. User248

    User248 Гик

    Изначально вопрос был про библиотеку U8glib. В ней изменения адреса я не нашёл. Но появилась идея подключить дисплеи встречно-параллельно на одну пару пинов.
    Код (C++):

    // D0 - SDA1 - SCL2
    // D1 - SCL1 - SDA2

    #include <U8g2lib.h>
    // clock, data, reset
    U8G2_SSD1306_128X64_NONAME_1_SW_I2C oled1(U8G2_R0, 1, 0, U8X8_PIN_NONE);
    U8G2_SSD1306_128X64_NONAME_1_SW_I2C oled2(U8G2_R0, 0, 1, U8X8_PIN_NONE);
     
     
    Михаил123 нравится это.
  6. испытаю...
     
  7. Airbus

    Airbus Радиохулиган Модератор

    Это да. Так ведь и сказал
    Ты прав. Здеь два. Я про 16х2 I2C написал. Сразу не увидел заголовок
     
  8. User248

    User248 Гик

    Проверил встречно-параллельный метод в симуляторе Wokwi. Работает. Адрес у дисплея 0x3c.

    U8g2+2xOled.png
    Код (C++):
    // D11 - SDA1 - SCL2
    // D12 - SCL1 - SDA2

    #include <U8g2lib.h>
    // clock, data, reset
    U8G2_SSD1306_128X64_NONAME_1_SW_I2C oled1(U8G2_R0, 12, 11, U8X8_PIN_NONE);
    U8G2_SSD1306_128X64_NONAME_1_SW_I2C oled2(U8G2_R0, 11, 12, U8X8_PIN_NONE);

    void setup() {
      oled1.begin();
      oled1.setFont(u8g2_font_t0_22b_tf);
      oled2.begin();
      oled2.setFont(u8g2_font_t0_22b_tf);

      // page_buffer
      oled1.firstPage();
      do {
        oled1.setCursor(0, 32);
        oled1.print("display 1");
      } while( oled1.nextPage() );
      oled2.firstPage();
      do {
        oled2.setCursor(0, 32);
        oled2.print("display 2");
      } while( oled2.nextPage() );
    }

    void loop() {
    }
     
    Последнее редактирование: 19 май 2022
    arkadyf нравится это.
  9. Airbus

    Airbus Радиохулиган Модератор

    Точно! У Вовки можно же проверить!
     
  10. User248

    User248 Гик

    Чтобы в этом симуляторе поменять адрес дисплея, нужно в файле diagram.json добавить атрибут "i2c-address": "0x3d"
    Код (C++):
    { "type": "board-ssd1306", "id": "oled2", "top": 241.73, "left": 189.34, "attrs": {"i2c-address": "0x3d"} }
     
    Последнее редактирование: 19 май 2022
    arkadyf и issaom нравится это.
  11. User248

    User248 Гик

    Последнее редактирование: 5 июл 2022
    arkadyf нравится это.