Позвонить Telegram Viber
График работы: пн–пт 9:00–18:00

OLED дисплей 0.96" 128×64 для Arduino и ESP32: особенности, подключение и пример проекта

RizneVdim

OLED дисплей 0.96" 128×64 для Arduino и ESP32: особенности, подключение и пример проекта

 Компактный OLED дисплей 0.96" 128×64 — один из самых популярных экранов для проектов на Arduino, ESP32, STM32 и других микроконтроллерах. Модуль широко используется в DIY-устройствах благодаря низкому энергопотреблению, высокой контрастности изображения и простоте подключения.

 Несмотря на компактные размеры, OLED дисплей позволяет выводить текст, графику, иконки, меню и полноценные пользовательские интерфейсы.

Что такое OLED дисплей и чем он отличается от LCD

 OLED (Organic Light Emitting Diode) — технология отображения, при которой каждый пиксель светится самостоятельно.

 Это обеспечивает несколько важных преимуществ:

  • отсутствие отдельной подсветки
  • идеально чёрный цвет
  • очень высокий контраст
  • широкий угол обзора
  • низкое энергопотребление

В отличие от TFT и LCD экранов, OLED-дисплей остаётся хорошо читаемым как в темноте, так и при слабом внешнем освещении.

Особенность двухцветного OLED дисплея 0.96"

Многие версии OLED дисплея 0.96" имеют двухцветную матрицу:

  • верхняя часть экрана отображается жёлтым цветом
  • основная нижняя область — голубым

Это не программная настройка, а физическая особенность OLED-матрицы.

Такое разделение удобно использовать при разработке интерфейсов:

  • верхняя зона — статус устройства
  • нижняя область — основные данные
  • режимы работы и предупреждения
  • служебная информация

По сути, дисплей уже обеспечивает готовое визуальное разделение интерфейса, что особенно удобно для устройств мониторинга.

Основные характеристики OLED дисплея 0.96"

  • Диагональ: 0.96"
  • Разрешение: 128×64 пикселя
  • Контроллер: SSD1306 / SH1106
  • Интерфейс подключения: I2C или SPI
  • Напряжение питания: 3.3–5 В
  • Угол обзора: более 160°
  • Энергопотребление: низкое
  • Цвет отображения: жёлтый + синий
  • Размер модуля: около 27×27 мм

Пример работы OLED дисплея с ESP32

Ниже приведён пример демонстрационного скетча для ESP32 с использованием SPI-подключения OLED дисплея SSD1306.

После включения микроконтроллера дисплей отображает стартовую заставку. Экран полностью заливается белым цветом на несколько секунд, что позволяет визуально увидеть двухцветную структуру OLED-матрицы. Такой подход часто используется в реальных устройствах мониторинга, источниках питания и BMS-контроллерах.

После инициализации устройство переходит в режим отображения рабочих данных. В данном примере имитируется интерфейс BMS-монитора аккумулятора.


#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// Пины подключения SPI-версии дисплея
#define OLED_MOSI  23  // D1
#define OLED_CLK   18  // D0
#define OLED_DC    17  // DC
#define OLED_CS    16  // CS
#define OLED_RESET 5   // RES

Adafruit_SSD1306 display(128, 64, &SPI, OLED_DC, OLED_RESET, OLED_CS);

// граница цветных зон
#define YELLOW_ZONE_HEIGHT 16

// ---------- DEMO BMS DATA ----------
float voltage = 13.4;
float current = 2.1;
int soc = 78;
float temp = 26.5;
// -----------------------------------


// ========= BOOT DEMO (ОДИН РАЗ) =========
void showBootFill() {
  display.clearDisplay();
  
  // Вариант 1 — белый фон + чёрный текст (рекомендую)
  display.fillScreen(SSD1306_WHITE);
  display.setTextColor(SSD1306_BLACK);
  display.setTextSize(2);
  display.setCursor(12, 18);
  display.println("BMS");
  display.println(" START");
  
  display.display();
  delay(3000);

  // Можно сразу очистить перед основным экраном
  display.clearDisplay();
  display.display();
}


// ========= BMS SCREEN =========
void drawBMS() {
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);   // белый текст на чёрном фоне

  // ---- ЖЁЛТАЯ ЗОНА (имитация) ----
  // Если хочешь жёлтую полосу — можно залить её инверсией или просто линией
  display.fillRect(0, 0, 128, YELLOW_ZONE_HEIGHT, SSD1306_WHITE);
  display.setTextColor(SSD1306_BLACK);   // чёрный текст на белой полосе
  display.setTextSize(1);
  display.setCursor(10, 4);
  display.print("BMS MONITOR");

  // возвращаем белый текст для остального
  display.setTextColor(SSD1306_WHITE);
  display.drawLine(0, YELLOW_ZONE_HEIGHT, 128, YELLOW_ZONE_HEIGHT, SSD1306_WHITE);

  // ---- ОСНОВНАЯ ЗОНА ----
  display.setCursor(0, 20);
  display.print("Voltage: ");
  display.print(voltage, 2);
  display.println(" V");

  display.setCursor(0, 32);
  display.print("Current: ");
  display.print(current, 2);
  display.println(" A");

  display.setCursor(0, 44);
  display.print("SOC:     ");
  display.print(soc);
  display.println(" %");

  display.setCursor(0, 56);
  display.print("Temp:    ");
  display.print(temp, 1);
  display.println(" C");

  display.display();
}


// ========= SETUP =========
void setup() {
  Serial.begin(115200);

  SPI.begin(OLED_CLK, -1, OLED_MOSI, OLED_CS);

  if (!display.begin(SSD1306_SWITCHCAPVCC)) {
    Serial.println("SSD1306 init failed");
    while (true);
  }

  display.setRotation(0);           // на всякий случай
  display.cp437(true);              // для корректных символов

  showBootFill();                   // показываем загрузку один раз
}


// ========= LOOP =========
void loop() {
  // имитация изменения данных
  voltage += 0.02;
  if (voltage > 13.8) voltage = 13.2;

  current += 0.1;
  if (current > 5.0) current = 0.3;

  soc--;
  if (soc < 60) soc = 80;

  temp += 0.2;
  if (temp > 32.0) temp = 25.0;

  drawBMS();

  delay(2000);   // обновление каждые 2 секунды
}

Где применяется OLED дисплей 0.96"

Этот модуль используется практически во всех направлениях DIY-электроники:

  • часы и будильники
  • погодные станции
  • измерительные приборы
  • BMS-мониторы аккумуляторов
  • IoT-устройства
  • меню управления устройствами
  • портативные тестеры
  • проекты на Arduino, ESP32 и других микроконтроллерах

Компактный размер позволяет устанавливать дисплей даже в небольшие корпуса устройств.

Преимущества OLED дисплея 0.96"

  • высокая читаемость изображения
  • минимальное энергопотребление
  • простое подключение
  • работа от 3.3В и 5В
  • поддержка Arduino и ESP32
  • поддержка популярных библиотек (Adafruit GFX, U8g2)
  • компактные размеры
  • быстрый вывод графики

Важно учитывать при использовании

  • OLED чувствителен к длительному отображению статичных элементов
  • рекомендуется периодически обновлять экран или использовать смещение интерфейса
  • верхнюю жёлтую область желательно использовать для текста, а не графиков

Соблюдение этих рекомендаций позволяет значительно увеличить срок службы дисплея.

Итог

OLED дисплей 0.96" 128×64 — один из лучших вариантов для создания интерфейсов в проектах на Arduino и ESP32. Он сочетает простоту подключения, отличную читаемость и низкое энергопотребление.

Благодаря двухцветной структуре экран особенно удобен для устройств мониторинга, где требуется визуальное разделение статуса и основных данных.

Можно сказать, что этот дисплей стал своеобразным Hello World мира электроники. Почти каждый серьёзный DIY-проект рано или поздно использует именно его, и такая популярность полностью заслужена.

С этим покупают:

  • OLED дисплей 0.96" 128×64 для Arduino esp32 stm32

    OLED дисплей 0.96" 128×64 для Arduino esp32 stm32
    120 грн
    ПОДРОБНЕЙ
  • 1.47" TFT IPS дисплей 172×320 ST7789 3.3V

    1.47" TFT IPS дисплей 172×320 ST7789 3.3V
    250 грн
    ПОДРОБНЕЙ
  • ESP32 CH340C Type-C 30Pin (4MB) — плата разработки Wi-Fi + Bluetooth

    ESP32 CH340C Type-C 30Pin
    235 грн
    ПОДРОБНЕЙ
  • Корпус для ESP32 WROOM 32D 30 pin (3D‑печать)

    Корпус для ESP32 WROOM 32D 30 pin (3D‑печать)
    60 грн
    ПОДРОБНЕЙ
  • Корпус для ESP32 WROOM 32D 30 pin (с доступом к пинам)

    Корпус для ESP32 WROOM 32D 30 pin (с доступом к пинам)
    60 грн
    ПОДРОБНЕЙ
  • TFT дисплей 0.96" 80×160 (IPS, SPI)

    TFT дисплей 0.96" 80×160 (IPS, SPI)
    159 грн
    ПОДРОБНЕЙ

Комментарии к статье

Пока нет комментариев. Будьте первым!

Добавить комментарий