Компактный 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-проект рано или поздно использует именно его, и такая популярность полностью заслужена.






Комментарии к статье
Пока нет комментариев. Будьте первым!
Добавить комментарий