Как собрать библиотеку, настроить её, прогнать desktop simulator и вывести первый экран.

Исходный контент этой страницы берётся напрямую из PipKit API: требования к сборке, build-time флаги, desktop simulator, инициализация, подсветка и логотип.

Этот файл описывает актуальный публичный 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_PREFS
    • 0 или 1
  • PIPCORE_ENABLE_WIFI
    • 0 или 1
  • PIPCORE_ENABLE_OTA
    • 0 или 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 — кнопка Prev
  • Right или D — кнопка Next
  • Enter или Space — кнопка Select
  • F1 — перезапуск 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)