Любой ардуинщик, хоть раз создававший интерфейс для OLED дисплея, знает эту боль. Вы пишете oled.setCursor(10, 20), загружаете прошивку, смотрите на экран — криво. Меняете на (12, 20), снова компилируете, снова загружаете. Это бесконечный процесс подбора координат, который убивает творчество и тратит драгоценное время.
Решение этой проблемы найдено командой Arduino-tex.ru. Мы представляем бесплатный визуальный редактор (OLED редактор), который позволяет нарисовать интерфейс мышкой и получить готовый, оптимизированный C++ код.
Фундаментом для проекта послужила библиотека GyverOLED от Алекса Гайвера. Она выбрана не случайно: это одна из самых легких библиотек, обладающая отличной поддержкой кириллицы и гибкой работой с буфером дисплея.
Где скачать?
Программа является бесплатной и распространяется по принципу "как есть". Автор редактора не несет ответственности за возможные сбои, а все права на используемую библиотеку GyverOLED принадлежат Алексу Гайверу.
Скачать OLED Редактор на «Бусти».
Прежде чем запускать редактор, необходимо подготовить среду Arduino IDE.
Редактор генерирует код, заточенный именно под эту библиотеку. Она работает напрямую с буфером экрана, что позволяет создавать плавную анимацию и сложные графические примитивы без мерцания.
Установка:
GyverOLED.
Программа поддерживает самые популярные микроконтроллеры. Подключение дисплеев SSD1306 или SSH1106 обычно осуществляется по шине I2C (всего 4 провода):
SDA -> Pin A4SCL -> Pin A5VCC -> 5VGND -> GND
SDA -> D2 (GPIO4), SCL -> D1 (GPIO5).
SDA -> GPIO 21, SCL -> GPIO 22
Важно! Можно использовать дисплей с spi интерфейсом. Для этого вручную настройте в коде работу с данным интерфейсом. Подробнее читайте в описании библиотеки GyverOLED.


Вам доступны базовые примитивы, из которых строится дизайн:
Важно: При использовании инверсии текста или заливке экрана, библиотека GyverOLED имеет особенность: текст может выводиться с небольшими черными полосами сверху и снизу. Учитывайте это при дизайне черного текста на белом фоне.
Это одна из самых сильных сторон редактора. Вам больше не нужны сторонние сервисы для конвертации картинок в hex-коды.


PROGMEM и добавит его в код.
Перед началом работы или экспортом в правой панели или вкладке "Настройки" можно задать параметры целевой системы:

Напоминание: Используйте осторожно, учитывая особенности вывода текста на сплошном фоне.
.json, чтобы вернуться к редактированию позже.

После того как макет готов, нажмите кнопку "Экспорт кода (.ino)". Программа сгенерирует готовый скетч.
/* OLED редактор от Arduino-tex.ru */
/* Установите библиотеку GyverOLED, через менеджер библиотек */
#include <GyverOLED.h>
//#include "icons_7x7.h" //Раскоментируйте если использует иконик из стандартного набора 7x7
#include "icons_8x8.h" //Раскоментируйте если использует иконик из стандартного набора 8x8
// --- Custom Bitmaps ---
const uint8_t custom_icon[] PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xfe,0x06,0x06,0xc6,0xc6,0x06,0x06,0xfe,0xfe,0xc6,0xc6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0x07,0x03,0x01,0xf0,0xf8,0xff,0xff,0xf8,0xf0,0x01,0x03,0x07,0xfe,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0f,0x1c,0x18,0x30,0x31,0x61,0x63,0x63,0x61,0x31,0x30,0x18,0x1c,0x0f,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
GyverOLED<SSD1306_128x64, OLED_BUFFER> oled;
void setup() {
Serial.begin(115200);
// ESP32: Default Pins (21 SDA, 22 SCL)
// ESP8266: D1(SCL), D2(SDA)
oled.init();
oled.clear();
delay(500);
drawInterface(); // Функция отрисовки интерфейса
}
// --- Функция отрисовки интерфейса ---
void drawInterface() {
oled.clear();
oled.invertText(false);
oled.setScale(2);
oled.setCursorXY(4, 2);
oled.print("12:36");
oled.invertText(false);
oled.setScale(2);
oled.setCursorXY(87, 4);
oled.print("30");
oled.invertText(false);
oled.setScale(4);
oled.setCursorXY(13, 29);
oled.print("30");
oled.drawBitmap(65, 27, icons_8x8[86], 8, 8);
oled.drawBitmap(67, 2, icons_8x8[5], 8, 8);
oled.invertText(false);
oled.setScale(2);
oled.setCursorXY(88, 25);
oled.print("59");
oled.invertText(false);
oled.setScale(2);
oled.setCursorXY(87, 46);
oled.print("39");
oled.line(81, 1, 81, 61, 1);
oled.drawBitmap(114, 1, icons_8x8[42], 8, 8);
oled.drawBitmap(114, 21, icons_8x8[42], 8, 8);
oled.drawBitmap(114, 40, icons_8x8[42], 8, 8);
oled.drawBitmap(114, 11, icons_8x8[5], 8, 8);
oled.drawBitmap(115, 31, icons_8x8[5], 8, 8);
oled.drawBitmap(114, 53, icons_8x8[87], 8, 8);
oled.update();
Serial.println("OLED start");
}
// --- Конец функции отрисовки ---
void loop() {
delay(50); // Основной цикл пустой, сделаем небольшую задержку
}Что внутри сгенерированного файла:
#include <GyverOLED.h>.const uint8_t ... PROGMEM.oled.init(), oled.clear()).void drawInterface(): Это ядро, созданное редактором. Внутри этой функции собраны все команды отрисовки (oled.line, oled.rect, oled.print, oled.drawBitmap), которые воссоздают ваш статический дизайн.
Редактор создает дизайн (каркас) интерфейса. Он не знает, какая переменная у вас отвечает за температуру датчика, а какая за заряд батареи.
Как объединить дизайн и логику:
drawInterface() в setup() для отрисовки статических элементов (рамок, подписей, логотипов).loop() (или по таймеру) вы должны дописать вывод динамических данных поверх дизайна.Пример:
/* OLED редактор от Arduino-tex.ru */
/* Установите библиотеку GyverOLED, через менеджер библиотек */
#include <GyverOLED.h>
//#include "icons_7x7.h" //Раскоментируйте если использует иконик из стандартного набора 7x7
#include "icons_8x8.h" //Раскоментируйте если использует иконик из стандартного набора 8x8
// Глобальные переменные
uint8_t set_temperatur = 20; // Уставка температуры
// --- Custom Bitmaps ---
GyverOLED<SSD1306_128x64, OLED_BUFFER> oled;
void setup() {
Serial.begin(115200);
// Инициализация дисплея
// ESP32: Default Pins (21 SDA, 22 SCL)
// ESP8266: D1(SCL), D2(SDA)
// Arduino Uno/Nano: A4(SDA), A5(SCL)
oled.init();
oled.clear();
delay(500);
drawInterface(); // Функция отрисовки интерфейса
}
// --- Функция отрисовки интерфейса (статические элементы) ---
void drawInterface() {
oled.clear(); // Очищаем буфер полностью
// Заголовок
oled.invertText(false);
oled.setScale(2);
oled.setCursorXY(5, 2);
oled.print("Меню Темп.");
// Время (пример)
oled.setCursorXY(3, 24);
oled.print("12:36");
// Значение 1
oled.setCursorXY(4, 45);
oled.print("30");
// Текущая уставка (начальное значение)
oled.setCursorXY(92, 24);
oled.print(set_temperatur);
// Значение 2
oled.setCursorXY(92, 45);
oled.print("39");
// Иконки и линии
oled.drawBitmap(117, 23, icons_8x8[86], 8, 8);
oled.line(3, 18, 123, 18, 1);
oled.drawBitmap(63, 23, icons_8x8[5], 8, 8);
// Значение 3
oled.setCursorXY(46, 45);
oled.print("59");
// Иконки и линии
oled.line(85, 23, 85, 60, 1);
oled.drawBitmap(28, 43, icons_8x8[42], 8, 8);
oled.drawBitmap(70, 43, icons_8x8[42], 8, 8);
oled.drawBitmap(116, 43, icons_8x8[42], 8, 8);
oled.update(); // Выводим все нарисованное на экран
Serial.println("OLED start");
}
// --- Конец функции отрисовки ---
void loop() {
static uint32_t time_loop; // Переменная для таймера
if (millis() - time_loop > 1000) { // Ждем 1 сек.
// Логика изменения температуры
if (set_temperatur < 99)
set_temperatur++;
else
set_temperatur = 10;
// Рисуем новое значение
oled.invertText(false);
oled.setScale(2);
oled.setCursorXY(92, 24);
oled.print(set_temperatur);
// обновим на дисплее
oled.update();
time_loop = millis(); // Сбрасываем таймер
}
}
Редактор также помогает определить с каким элементов мы работает.


Инструмент от Arduino-tex.ru значительно снижает порог вхождения для новичков в работе с дисплеями и экономит часы времени для профессионалов. Вы рисуете — программа пишет код.
Где скачать?
Программа является бесплатной и распространяется по принципу "как есть". Автор редактора не несет ответственности за возможные сбои, а все права на используемую библиотеку GyverOLED принадлежат Алексу Гайверу.
Скачать OLED Редактор на «Бусти».

Создавайте красивые интерфейсы быстро!
Понравилась статья Визуальное создание интерфейсов для OLED дисплеев на базе GyverOLED? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на VK Видео, вступить в группу Вконтакте.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
| Пример 1 - для программы.json | 12 Kb | 29 | Скачать | |
| Пример 2 - для программы.json | 4 Kb | 25 | Скачать | |
| Пример 2 - для программы.json | 5 Kb | 30 | Скачать | |
| Пример кода 1: для arduino, ESP8266, ESP32.ino | 4 Kb | 27 | Скачать | |
| Пример кода 2: для arduino, ESP8266, ESP32.ino | 2 Kb | 22 | Скачать | |
| Пример кода 2 с счетчиком и изменением числа на дисплее.ino | 3 Kb | 24 | Скачать |
Статьи про Arduino
20 декабря , 2025
Комментариев:0
Файлов для скачивания:6
Фото:11
Понравилась статья? Нажми
Читайте также
Мы в соц сетях
Комментарии