Форум Вопросы и темы по программированию Arduino, ESP8266, STM32, Digispark и пр.

Два OLED 128x64 на одну шину.

9 мая, 2020 - 10:35
На дисплее имеется перемычка для смены адреса 0х78 или 0х7А. С библиотекой iarduino все работает но эта библиотека очень скудная по функционалу. Поэтому хотелось бы использовать Adafruit_SSD1306 и Adafruit-GFX. Но у меня не получилось пока это реализовать в скетче. Работает только один дисплей с адресом 3D. Оба дисплея работают только если написать высота равна 32 а не 64, но тогда текст растягивается по высоте в 2 раза. Подскажите что делаю не так???

#include 
#include
#include
#include

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display1(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_SSD1306 display2(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup()
{
  display1.begin(SSD1306_SWITCHCAPVCC, 0x3D);        // инициализация дисплея по интерфейсу I2C, адрес 0x3C
  display1.clearDisplay();                           // очистка дисплея
  display1.setTextSize(1);                           // установка размера шрифта
  display1.setTextColor(WHITE);                      // установка цвета текста

  display2.begin(SSD1306_SWITCHCAPVCC, 0x3C);        // инициализация дисплея по интерфейсу I2C, адрес 0x3C
  display2.clearDisplay();                           // очистка дисплея
  display2.setTextSize(1);                           // установка размера шрифта
  display2.setTextColor(WHITE);                      // установка цвета текста
}

void loop() 
{
display1.clearDisplay();
  display2.clearDisplay();
  display1.setCursor(0, 0);
  display1.print("1disp");
  display1.display();
  display2.setCursor(0, 0);
  display2.print("2disp");
  display2.display();
  delay(500);

  display1.clearDisplay();
  display2.clearDisplay();
  display1.setCursor(0, 0);
  display1.print("*****");
  display1.display();
  display2.setCursor(0, 0);
  display2.print("*****");
  display2.display();
  delay(500);
}


UA6BBI
UA6BBI UA6BBI Зарегистрирован:
8.05.2020
10 мая, 2020 - 08:14 #1
Вы не пытайтесь подключать срезу 2 дисплея. Подключите один настройте работу. После приступайте к работе с двумя.
Как работать с одним дисплеем смотрите тут:
#15.1 SSD1306 OLED-дисплей, вывод текста на русском языке в Arduino IDE

Будущее за микроконтроллерами
Admin Admin Зарегистрирован:
3.07.2018
10 мая, 2020 - 08:15 #2
У вас в коде даже нет информации какие библиотеки использует. Как вам помочь?

Будущее за микроконтроллерами
Admin Admin Зарегистрирован:
3.07.2018
10 мая, 2020 - 09:58 #3
Прошу прощения
#include <Wire.h> 
#include <Adafruit_GFX.h> 
#include <Adafruit_SSD1306.h>
I2C сканер показывает что на шине 2 устройства с адресами 3C и 3D. Пробовал примеры загружать, например тест графики. Работает великолепно на каждом из дисплеев, только адрес в коде менял.

UA6BBI
UA6BBI UA6BBI Зарегистрирован:
8.05.2020
30 января, 2022 - 18:20 #4
30 Янв 2022 18:08 Добрый вечер! Пол-года назад я сделал аналогичную ошибку с тремя разными экранами (2-I2C и SPI) на espruino-pico модуле. Знакомый программист сходу по телефону подсказать не смог. На этом я "завис".
Удалось ли Вам продвинуться?
 

КИС814
814kis 814kis Зарегистрирован:
30.01.2022

Войдите или Зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Cлучайные товары

Посмотреть товар в Магазине »

Мы в соц сетях

Подпишись на канал Telegram

Portal-PK (Портал ПК) © 2015 - 2024
Разработка проектов
AT Block
DWIN Box