OLED-дисплеи Adafruit GFX / SSD1306
128x64, графика, шрифты, I2C и SPI
Пиксельная графика на OLED: текст, фигуры, свои шрифты, анимация, буфер дисплея и типовые чёрные экраны.
Прогресс раздела0/62 · 0%
- OLED SSD1306: чем пиксельный дисплей лучше LCDСамосветящиеся пиксели против подсветки: контраст, миллиамперы, скорость, холод и солнце — сравнение SSD1306 128x64 с LCD1602 и защита от выгорания.14 мин
- Подключение OLED 128x64 по I2C: схемаЧетыре провода к SSD1306: VCC, GND, SDA на A4, SCL на A5, питание 3.3-5 В, подтяжки на борту и место на макетке — плюс проверка сборки в симуляторе.13 мин
- Адрес OLED: сканер I2C и 0x3CПочему OLED молчит: адреса 0x3C и 0x3D, сканер I2C и коды endTransmission, 0x78 против 0x3C, подтяжки, питание и второй прибор на шине.15 мин
- Диагностика OLED: чёрный экран и мусор на шинеПошаговая диагностика OLED: питание 3.3 и 5 В, адреса 0x3C и 0x3D, сканер шины, перепутанные SDA и SCL, подтяжки, забытые begin и display, виды мусора.16 мин
- Анимированный интерфейс: переходы и скроллингПлавные смены экранов на OLED: кадры на millis, сдвиг контента, аппаратный скроллинг startscrollright и stopscroll, fade через dim и когда анимация вредит.15 мин
- Итоговый проект: дашборд на OLED с меню и графикомФинальный прибор раздела: дашборд с тремя экранами и меню на кнопках D2 и D3, зоны и график истории из штрихов, датчики на A0 и A1, весь цикл на millis.17 мин
- Помодоро-таймер на OLED: 25 минут работы, 5 отдыхаПомодоро-таймер на OLED: крупные цифры остатка, полоса прогресса, кнопка старт-пауза по фронту, зуммер-переходы и счётчик циклов — машина состояний на millis.16 мин
- Мини-осциллограф: сигнал АЦП в реальном времениМини-осциллограф на OLED: буфер 64 отсчётов, развёртка от потенциометра, триггер по порогу и дребезг кнопки, увиденный глазами, — всё на АЦП Uno.17 мин
- Анимации загрузки: спиннер, прогресс и пасхалкиАнимации загрузки на OLED: спиннер из четырёх кадров по millis, прогресс от реальных шагов инициализации и секретный экран после пяти нажатий кнопки.15 мин
- Погодный ярлык: иконки солнца/облака/дождя из битмаповПогодный ярлык на OLED: битмапы 16x16 — солнце, облако, дождь — по 32 байта, команды 1/2/3 из Serial и кнопка перебора, смена иконки без мерцания.16 мин
- Монитор батареи: вольтметр и график на OLEDВольтметр Li-ion на OLED: делитель 100к/10к на A0, пороги 3.3 и 3.0 В со статусом текстом, кольцо на 32 точки и график drawLine, min/max по кнопке.16 мин
- Терминал на OLED: последние строки SerialТерминал отладки на OLED: строки через readStringUntil, кольцо на пять записей, перенос длинных, кнопка очистки и LED-курсор — прибору не нужен ноутбук.15 мин
- drawLine, drawRect, fillRect: рамки и гистограммыЧетыре команды GFX собирают рамку, шкалу и столб: угол против центра, заливка одним вызовом и бар от ручки A0 шириной до 122 пикселей — без битмапов и таблиц.15 мин
- Буфер 1024 байта: clearDisplay, рисуй, display()Кадр 128×64 — это 1024 байта SRAM, половина ОЗУ Uno: clearDisplay не трогает шину, display() вываливает весь буфер за 23 мс на 400 кГц.16 мин
- Кадровая анимация: полоса загрузки на millis-тактеБар растёт по кадрам на millis-такте 40 мс — около 25 FPS: кнопка рестарта читается каждый проход, шина успевает, а delay не блокирует ничего.15 мин
- setTextSize: сколько символов влезает в 128×64Размер 1 даёт 21 символ в строке, размер 2 — только 10: считаем ячейки 6×8, строим крупную сводку показаний и ловим строки, молча уехавшие за край.16 мин
- invertDisplay и dim: экран, который не слепит ночьюИнверсия меняет чёрное и белое одной командой панели, dim уводит контраст в ноль: ночной режим по фоторезистору с гистерезисом и без слепящих белых полей.15 мин
- Экран-сводка: DHT22 крупно и по таймеруТемпература шрифтом 18×24, влажность двойкой ниже, опрос строго раз в две секунды по millis: сводка с DHT22 на SSD1306 без delay и без nan на экране.16 мин
- Меню на кнопках: вверх, вниз и выборТри кнопки на D2-D4 ходят по пунктам меню на SSD1306, стрелка выделяет строку, выбор запускает действие: каркас без delay, дребезг гасим окном 40 мс.16 мин
- Энкодер KY-040 в меню: крути и выбирайCLK даёт фронт на каждый щелчок, DT подсказывает направление, SW выбирает: переносим меню на энкодер KY-040 и честно сравниваем его с тремя кнопками.16 мин
- Подэкраны и выход: автомат экрановПункт меню открывает экран настройки, кнопка возвращает назад: раскладываем интерфейс на состояния MENU и EDIT и ловим залипание перехода на фронте.17 мин
- Раскладка кадра на бумаге: сетка 128×64, зоны и отступыБумажный макет кадра SSD1306: сетка 21 на 8 знакомест, зоны шапки, тела и футера, отступы как константы скетча и перенос разметки в drawRect и fillRect.16 мин
- График с датчика: бегущая лента точек и автоскейлБегущая лента точек с датчика на SSD1306: кольцевой буфер, автоскейл минимума и максимума окна, мёртвая зона против дрожи шкалы и защита от деления на ноль.17 мин
- Меню с инверсной строкой: fillRect и чёрный текст поверхИнверсная строка в меню на SSD1306: fillRect под пункт, setTextColor(BLACK, WHITE) поверх, навигация ручкой с гистерезисом и диалог подтверждения выбора.16 мин
- Спрайт-анимация: человечок шагает из PROGMEMСпрайт-анимация на SSD1306: позы шага человечка в PROGMEM, переключение кадров по millis, стирание старой зоны fillRect, темп шага и цена кадра в байтах.16 мин
- Страницы-вкладки на одной кнопке: статус, график, настройкиСтраницы-вкладки на OLED одной кнопкой: статус, график и настройки в одном скетче, фронт кнопки без дребезга, точки-вкладки и перерисовка по странице.17 мин
- Крупные цифры для термометра: setTextSize и своя точкаКрупные цифры на SSD1306: setTextSize 2 и 3, своя десятичная точка и минус для термометра, сглаживание десятых, обновление по I2C и пороговый светодиод.16 мин
- Меню на OLED с энкодером: крутим, выбираем, входимВложенное меню на OLED с энкодером KY-040: ручка листает пункты и правит значение, клик SW ходит в подэкран и назад, счёт щелчков в прерывании, дребезг CLK.16 мин
- Живой график на OLED: drawLine и скроллящийся буферЖивой график на OLED: кольцевой буфер точек, автоскейл по min/max окна с мёртвой зоной, сетка и цена деления, черта среднего и переполнение int в сумме.16 мин
- Свои шрифты и иконки: GFX fonts, drawBitmap, PROGMEMФирменный экран на OLED: иконка 16x16 через drawBitmap и PROGMEM, FreeSans9pt7b через setFont, бюджет комплекта в байтах и ловушка битмапа в ОЗУ.17 мин
- Часы на OLED: DS3231, крупный шрифт и моргающее двоеточиеНастольные часы на DS3231 и SSD1306: setTextSize(2) для крупного HH:MM, моргающее двоеточие по чётности секунды, дата с днём недели снизу, тик по millis.16 мин
- Три экрана на одной кнопке: автомат отображений DHTТри экрана термогигрометра на одной кнопке: температура, влажность и индекс комфорта; автомат состояний на enum и switch, анти-дребезг 200 мс и печать тольк.16 мин
- Сплэш-скрин и прогресс-бар: приятный старт устройстваЗаставка при старте и честный прогресс инициализации: drawRect-рамка с fillRect-полосой, шаги от шины до сети, ловушка display() в буфере и мнение, когда сп.15 мин
- Adafruit GFX и SSD1306: установка и первый скетчAdafruit GFX и Adafruit_SSD1306: роли трёх библиотек, установка через менеджер с зависимостями, первый скетч с begin и display() и проверка заставкой Adafruit.15 мин
- clearDisplay и display(): двойная буферизацияЧто делает clearDisplay и display(): буфер ОЗУ против GDDRAM контроллера, цена кадра по I2C, стратегии очистки и темп обновления без мерцания и дрожи.16 мин
- Текст на OLED: print, setCursor, размер шрифтаТекстовый API Adafruit GFX: сетка 21×8, setTextSize 1–3, setCursor в пикселях, print против println, инверсный setTextColor и компоновка экрана по зонам.15 мин
- Змейка на SSD1306: буфер кадра, скорость и кнопкиЗмейка на SSD1306: сетка клеток 8×8, координаты в двух массивах, кадр по millis 160→70 мс с разгоном, повороты двумя кнопками и коллизии по массиву.16 мин
- Парктроник: HC-SR04 и полоса расстояния на OLEDПарктроник на HC-SR04 и OLED: полоса-градусник 1 см = 1 пиксель, зоны 100/50/20 см, писк от редкого до сплошного, пауза 60 мс между пингами и медиана из трёх.16 мин
- Термостат с гистерезисом: DS18B20, реле и экранТермостат на DS18B20 и OLED: уставка кнопками с шагом 0,5 °C, гистерезис 0,5 °C через две границы вместо abs, крупно NAGREV и POKOJ, честное питание реле.16 мин
- Шрифты GFX: Free-семейство и их размерыFreeFonts в Adafruit GFX: лица Serif, Sans, Mono, кегли 9-24 pt, include из папки Fonts, setFont, цена шрифта во флеше и курсор по базовой линии.16 мин
- Линии и фигуры: drawLine, drawRect, fillCircleПримитивы Adafruit GFX на OLED: drawPixel, drawLine, drawRect, fillRect, drawCircle, drawRoundRect, drawTriangle — аргументы, цвет WHITE и BLACK, ластик.15 мин
- Анимация на OLED: движущийся объект без мерцанияАнимация OLED без мерцания: петля кадра clearDisplay-рисование-один display(), интервалы по millis, бюджет 92 мс на кадр, шарик от потенциометра и кнопки.17 мин
- Прогресс-бар и слайдеры на OLEDПрогресс-бар на OLED: drawRect и fillRect под капотом, проценты из analogRead через map, вертикальный столбик и слайдер с ручкой, дрожь АЦП и темп обновления.16 мин
- Битмапы на OLED: drawBitmap из массиваdrawBitmap на SSD1306: картинка как массив байтов, восемь пикселей в байте, вес иконок от 8 до 1024 байтов, PROGMEM против переполнения SRAM, инверсия и кадры.16 мин
- image2cpp: конвертируем картинку в кодimage2cpp: из PNG в массив байтов для OLED — порог чёрного и белого, инверсия, точный размер под иконку и экран, режимы Horizontal и Vertical, вставка в скетч.17 мин
- Иконки интерфейса: спрайты и маскиСпрайты на OLED: пара битмапов иконка плюс маска вместо прозрачности, наборы иконок 8x8 и 16x16, движение без квадратного следа и хранение наборов в PROGMEM.16 мин
- drawPixel и буфер: пишем в конкретный пиксельdrawPixel на SSD1306: координаты 0-127 и 0-63, тихие границы, раскладка буфера по столбцам, прямой доступ getBuffer и мигающие точки без пересборки кадра.16 мин
- Кириллица на OLED: u8g2 и свои шрифтыПочему print в Adafruit выдаёт мусор вместо русских букв: кириллические шрифты U8g2, drawUTF8 и кодировка файла, цена флеша и мост U8g2_for_Adafruit_GFX.16 мин
- U8g2 против Adafruit: сравнение библиотекU8g2 против Adafruit SSD1306: расход ОЗУ и флеша, кириллица в готовых шрифтах, скорость на I2C и SPI, перенос кода на drawStr — когда сменить библиотеку.16 мин
- Меню на OLED: навигация кнопкамиМеню на OLED 128x64: список пунктов в массиве, курсор-стрелка, автомат состояний NAV и EDIT, кнопки с фронтом и антидребезгом на millis, перерисовка по ключу.16 мин
- Графики на OLED: отрисовка показаний датчикаСамописец датчика на OLED: оси и масштаб map в высоту экрана, кольцевой буфер последних 64 значений, полилиния drawLine и обновление раз в секунду по millis.17 мин
- Часы на OLED: крупный шрифт и RTCЧасы на SSD1306 и DS3231: setTextSize(2) для крупного времени, ведущие нули, мигающее двоеточие, тик раз в секунду по millis и температура модуля на экране.16 мин
- Игра на OLED: Flappy Bird за сотню строкFlappy Bird на SSD1306 за сотню строк: скорость плюс гравитация, трубы со щелью, счёт и рекорд, кнопка на D2, кадры на millis, game over с рестартом.17 мин
- OLED и датчики: метео-панель в реальном времениМетео-панель на SSD1306: зоны под температуру, влажность и давление, обновление по таймеру без мерцания, фиксированная ширина строк и тайминги датчиков.15 мин
- SPI OLED 128x64: быстрее, но больше проводовOLED 128x64 по SPI: семь проводов против четырёх, пины SCK MOSI DC CS RESET, конструктор Adafruit_SSD1306 с &SPI, 8 МГц против 100-400 кГц и когда SPI оправдан.16 мин
- I2C или SPI OLED: замеряем FPSЗамер FPS OLED одним скетчем: I2C 100 и 400 кГц против SPI 8 МГц, счёт кадров по millis с окном в секунду, компромиссы проводов, скорости и памяти с числами.16 мин
- SH1106 против SSD1306: чёрный экран и смещениеSH1106 против SSD1306: память 132x64 против 128x64, сдвиг на 2 пикселя и мусор справа, чёрный экран при живом сканере, драйверы Adafruit_SH1106G и U8g2.15 мин
- OLED 128x32: компактный модуль и перенос кодаМодуль OLED 128x32: буфер 512 байт и четыре строки текста, чек-лист переноса скетча с 128x64 и диагноз низа экрана, в котором пропали строки.16 мин
- Частичное обновление экрана: экономим RAMЗональная перерисовка OLED без иллюзий: буфер 1024 байта из 2 КБ SRAM Uno, getBuffer, page-режим U8g2 со 128 байтами, когда памяти не хватает.16 мин
- Питание OLED: потребление и ресурс дисплеяСколько миллиампер стоит OLED и на сколько лет хватает: ток от картинки, часы свечения до полупотускнения, dim и DISPLAYOFF, кнопка гашения экрана.15 мин
- OLED SSD1306: первый текст на 128x64Подключаем OLED SSD1306 по I2C: адрес 0x3C, буфер 1024 байта против 2 КБ RAM Uno, setTextSize и setCursor, первый текст и счётчик секунд в симуляторе.15 мин
- Графика на OLED: линии, счётчики и мини-интерфейсРисуем на SSD1306 с Adafruit GFX: координаты и примитивы, цена кадра по I2C и обновление раз в 100 мс, текстовый дашборд температуры и времени в симуляторе.16 мин
Гайды по теме раздела
- Симулятор OLED SSD1306 онлайн: дисплей 128x64 без модуляОнлайн-симулятор SSD1306: 128x64, I2C, Adafruit_SSD1306.
- TFT-дисплей ILI9341 и ST7789: подключение к Arduino по SPIПодключение TFT-дисплея ILI9341 и ST7789 к Arduino по SPI: распиновка, библиотеки Adafruit_ST7789 и TFT_eSPI, память платы, PROGMEM для шрифтов и картинок.