Этот файл описывает актуальный публичный API PipGUI и PipCore, который есть в коде проекта.
Требования к компиляции (PlatformIO)
PipKit использует C++17. Для PlatformIO добавьте в platformio.ini:
build_unflags =
-std=gnu++11
build_flags =
-std=gnu++17
1. Build-time флаги
Низкий слой PipCore выбирает платформу, драйвер дисплея и optional backend-модули на этапе компиляции. Эти флаги задаются в include/config.hpp.
PIPCORE_DISPLAY- пример:
#define PIPCORE_DISPLAY ST7789 - поддерживаемые дисплеи:
ST7789,ILI9488,SIMULATOR
- пример:
PIPCORE_PLATFORM- пример:
#define PIPCORE_PLATFORM ESP32 - поддерживаемые платформы:
ESP32,DESKTOP
- пример:
PIPCORE_ENABLE_PREFS0или1
PIPCORE_ENABLE_WIFI0или1
PIPCORE_ENABLE_OTA0или1
PIPCORE_OTA_PROJECT_URL- базовый OTA URL для core-level OTA backend
Что важно:
- по умолчанию optional-модули
PipCoreвыключены. - если внешний код использует
pipcore::net::*приPIPCORE_ENABLE_WIFI=0, сборка падает на этапе компиляции. - если
PipGUIреально использует Wi-Fi / OTA, соответствующиеPIPCORE_ENABLE_*тоже должны быть включены явно.
2. Desktop simulator
Симулятор нужен для локального прогона GUI на Windows без ESP32 и физического дисплея.
Запуск:
powershell -ExecutionPolicy Bypass -File .\tools\sim-run.ps1
Полезные варианты:
powershell -ExecutionPolicy Bypass -File .\tools\sim-run.ps1 -Debug
powershell -ExecutionPolicy Bypass -File .\tools\sim-run.ps1 -NoRun
2.1. Управление в окне simulator
LeftилиA— кнопкаPrevRightилиD— кнопкаNextEnterилиSpace— кнопкаSelectF1— перезапуск simulator-процессаF2— сохранить PNG-скриншот в.sim/shots/F3— начать/остановить запись видео в.sim/videos/
3. Инициализация
3.1. Конфигурация дисплея
Полный пример:
ui.configDisplay()
.pins(11, 12, 10, 9, -1) // mosi, sclk, cs, dc, rst
.size(240, 320) // width, height
.hz(80000000) // частота SPI
.order("RGB") // "RGB" или "BGR"
.invert(true) // инверсия панели
.swap(false) // swap байтов RGB565
.offset(0, 0); // смещение активной области
3.2. Запуск GUI
После конфигурации дисплея вызывается begin():
ui.begin(0); // rotation: 0..3
// ui.begin(0, true); // forceTiles: принудительно включить tiled-mode
Runtime-поворот экрана
ui.setRotation(0); // повернуть экран сразу или с анимацией по умолчанию
ui.setRotation(1, 620); // тот же поворот, но со своей длительностью
ui.screenRotation(); // текущая ориентация 0..3
ui.rotationTransitionActive(); // идёт ли сейчас анимация переворота
3.3. Подсветка и яркость
ui.setBacklight()
.pin(48) // pin
.channel(0) // PWM channel
.freq(5000) // PWM frequency
.resolution(12); // PWM resolution bits
Управление яркостью:
ui.setMaxBrightness(70); // ограничить максимум 70%
ui.setBrightness(35); // задать текущую яркость
ui.brightness(); // получить текущее значение
4. Логотип
ui.showLogo()
.text("PISPPUS", "Digital Thermometer")
.anim(FadeIn);
Параметры anim(...):
None— просто показывает логотип без анимацииFadeIn— плавно проявляет текстLightFade— плавно поднимает яркость подсветки (требует настроенный backlight)