Как правильно подойти к вопросу: какой формат иконок для Oled нужно использовать?
По вводным: разбираюсь в метеостанции на ESP8266, в комплекте шел экран 128х64.
По вводным: для визуала использую Adafruit_GFX.
По вводным: для конвертации используюhttps://javl.github.io/image2cpp/
Сейчас ситуация такая: проверял различные настройки и изображения, но никак не смог подобрать нужный. ИИ не помогла тоже ничем)
По вводным: какой формат выходной нужно использовать? (Arduino code, Arduino code, single bitmap, Adafruit GFXbitmapFont)
Нужно понять: какие дополнительные настройки нужно использовать еще?
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для OLED-дисплеев в Arduino важен не “формат иконки” как файла, а формат массива пикселей, который понимает библиотека дисплея. Чаще всего маленькие OLED 128x64 работают через SSD1306/SH1106 и выводят монохромную графику: 1 бит на пиксель, то есть каждый пиксель включён или выключен.
Если используете Adafruit SSD1306, иконки обычно хранят как bitmap-массив в PROGMEM. Исходную PNG/SVG-картинку нужно преобразовать в C array. Размер должен совпадать с тем, что вы выводите: например 16x16, 24x24, 32x32.
static const unsigned char PROGMEM icon_wifi[] = { 0x00, 0x18, 0x24, 0x42, 0x81, 0x00, 0x18, 0x18 };
Вывод через Adafruit:
display.drawBitmap(0, 0, icon_wifi, 16, 16, SSD1306_WHITE); display.display();
Для U8g2 формат похожий, но часто используются XBM-битмапы. Удобно готовить иконку как чёрно-белое изображение, затем конвертировать через image2cpp или встроенные инструменты. Важно правильно выбрать порядок битов: horizontal/vertical, MSB/LSB. Если картинка выводится “мусором” или зеркально, почти всегда выбран не тот порядок байтов.
Не используйте цветные PNG напрямую: микроконтроллеру всё равно нужен массив байтов, а не файл. Для крупных наборов иконок следите за памятью: UNO/Nano быстро упираются в Flash/RAM, поэтому храните данные в PROGMEM и не держите большие буферы в оперативной памяти.
Итог: для обычного OLED берите монохромный bitmap 1-bit, конвертируйте в C array под вашу библиотеку и храните в PROGMEM. Формат подбирается не “под OLED вообще”, а под конкретный контроллер и библиотеку: Adafruit SSD1306, U8g2, GyverOLED и т.п.