Add four animated Cyberpunk-style ESPHome pages

Netrunner HUD, self-solving breach protocol, optics boot-and-scan and a
split HUD with a mini breach matrix, all in the page rotation. The el512
display gains animated_pages / animation_interval (redraw ~15 fps while
shown), page_age_ms() as animation clock, and shift_rows() / invert_rect()
for glitch effects.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mangavalkandClaude Opus 5.5 committed 2026-10-18 23:29:12 +02:00
1 parent 6d5e5315f0
commit 50ee17b3f6
7 files changed
+944 -4

No files matched your search

+32 -2
View File
@@ -82,6 +82,7 @@ components/el512/ shared driver + ESPHome component (one copy of the code)
el512_panel.* framebuffer, DMA ring, refresh interrupt (ESP-IDF API)
still_alive.* Portal end-credits show, 5x7 font (el512_font.h)
still_alive_data.h show content, generated by tools/import_still_alive.py
cyberpunk.* animated Cyberpunk-style ESPHome pages
el512_display.* ESPHome display platform `el512`
__init__.py, display.py ESPHome config schema
lib/EL512/ Arduino library: Adafruit_GFX front end (EL512_GFX)
@@ -108,8 +109,9 @@ pio device monitor
## ESPHome / Home Assistant
[esphome/el512-panel.yaml](esphome/el512-panel.yaml) turns the panel into a Home
Assistant display with eight pages: clock and weather, forecast, agenda, a sensor
dashboard with a message line, now playing, Plex, solar, and Still Alive. Pages
Assistant display with twelve pages: clock and weather, forecast, agenda, a sensor
dashboard with a message line, now playing, Plex, solar, Still Alive, and four
animated [Cyberpunk-style pages](#cyberpunk-pages). Pages
rotate on an interval; Home Assistant gets a page select, a pause switch, the
interval, a message text, a "Play Still Alive" button, and Display / Low power mode
switches (ENABLE, _LOWPWR).
@@ -130,6 +132,8 @@ display:
enable_pin: GPIO25 # optional, J2-6
low_power_pin: GPIO26 # optional, J2-5
still_alive_page: page_still_alive # optional
animated_pages: [page_cyber_hud] # optional: redraw these while shown
animation_interval: 66ms # optional, default 66ms (~15 fps)
pages: ...
```
@@ -185,6 +189,32 @@ They are included only for personal, non-commercial use in this hobby project, a
all rights remain with their owners. This project is not affiliated with or
endorsed by Valve.
## Cyberpunk pages
Four animated ESPHome pages in a Cyberpunk look, drawn by
[components/el512/cyberpunk.cpp](components/el512/cyberpunk.cpp) with Orbitron, Rajdhani
and Share Tech Mono (Google Fonts). All of them take part in the rotation:
- **Cyber HUD**: clock, outside weather, power (solar, house, grid) and four rooms
in cut-corner frames, with a scrolling ticker.
- **Cyber Breach**: a breach-protocol code matrix that solves itself: the cursor
walks the active row or column, codes fill the buffer, daemons upload, then a new
puzzle starts.
- **Cyber Scan**: an optics boot log with live values, a calibration zoom, then a
rotating reticle around the clock and a typed-out scan of the house.
- **Cyber Split**: compact clock and readouts on the left, a small breach matrix on
the right.
They are listed under `animated_pages`, so they redraw about 15 times a second
while shown; each page starts its intro (wipe-in, glitches) when it appears. The
fonts and Home Assistant values come from the globals `cp_fonts` and `cp_home` in
`el512-panel.yaml`. To keep only some of them, remove the others from `pages`,
`animated_pages`, the page select, `on_page_change` and the rotation loop count.
These pages are inspired by the look of Cyberpunk 2077 and use no assets from it.
Cyberpunk 2077 is a trademark of CD PROJEKT S.A.; this project is not affiliated
with or endorsed by CD PROJEKT RED.
## Using the driver
```cpp