Migrate to Waveshare ESP32-S3-Touch-AMOLED-2.16 with auto-rotation, splash, and battery
Full hardware swap from Panlee SC01 Plus (480×320 IPS) to Waveshare 2.16" square AMOLED (480×480, CO5300 + CST9220 + AXP2101 + QMI8658). Library stack moves to Arduino_GFX, SensorLib, XPowersLib on the pioarduino platform 55.03.38-1 (Arduino Core 3.x). UI: - 4 screens (splash, usage, controller, bluetooth) with 3-button physical navigation: GPIO 0 = prev, AXP PKEY = cycle, GPIO 18 = next. - IMU-driven 90° auto-rotation. CO5300 can't rotate via MADCTL, so flush callback does CPU strip-rotation in PARTIAL render mode. Rotation transitions use AMOLED brightness flash (instant black → redraw → ramp). - Battery indicator (Lucide icons) in upper-right, RGB565A8 alpha so it blends over the splash animations. - USB plugged/unplugged auto-switches between Usage and Controller screens (suppressed while on splash). - Fonts and icons re-scaled ~1.9× for the higher-DPI panel; 20px margins to clear rounded corners. Splash: - 13 × 20×20 pixel-art creature animations sourced from claudepix.vercel.app via tools/scrape_claudepix.js (scraper handles both PRESET creature-engine and standalone FRAMES+PAL formats). tools/convert_to_c.js emits firmware/src/splash_animations.h. Attribution preserved in README and the generated header. Tooling: - tools/png_to_lvgl.js converts alpha PNGs to LVGL RGB565A8 (planar layout, with --tint to colorize Lucide black-on-transparent sources). - tools/scrape_claudepix.js, tools/convert_to_c.js for the splash pipeline. Docs: - New worktree CLAUDE.md with hardware pin map, file inventory, build commands, and the 8 critical gotchas (CO5300 rotation, OPI PSRAM, pioarduino requirement, LVGL 9 font patching, centralized touch read, even-aligned flush regions, touch swap/mirror values, RGB565A8 layout). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
10b8052bcc
commit
97a5443601
@@ -1,14 +1,16 @@
|
||||
[env:sc01plus]
|
||||
platform = espressif32
|
||||
[env:waveshare_amoled_216]
|
||||
platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.38-1/platform-espressif32.zip
|
||||
board = esp32-s3-devkitc-1
|
||||
framework = arduino
|
||||
board_build.arduino.memory_type = qio_opi
|
||||
upload_speed = 921600
|
||||
monitor_speed = 115200
|
||||
|
||||
build_flags =
|
||||
-DARDUINO_USB_CDC_ON_BOOT=1
|
||||
; HID is via BLE now, no TinyUSB needed — normal pio upload works
|
||||
-DBOARD_HAS_PSRAM
|
||||
; AXP2101 PMU
|
||||
-DXPOWERS_CHIP_AXP2101
|
||||
; NimBLE config — peripheral-only, single connection
|
||||
-DCONFIG_BT_NIMBLE_ROLE_BROADCASTER=1
|
||||
-DCONFIG_BT_NIMBLE_ROLE_PERIPHERAL=1
|
||||
@@ -38,7 +40,9 @@ build_flags =
|
||||
-DLV_USE_SNAPSHOT=1
|
||||
|
||||
lib_deps =
|
||||
lovyan03/LovyanGFX@^1.1.16
|
||||
moononournation/GFX Library for Arduino@^1.5.6
|
||||
lewisxhe/SensorLib@^0.2.6
|
||||
lewisxhe/XPowersLib@^0.2.7
|
||||
lvgl/lvgl@^9.2.0
|
||||
bblanchon/ArduinoJson@^7.0.0
|
||||
h2zero/NimBLE-Arduino@^2.1.1
|
||||
|
||||
Reference in New Issue
Block a user