Files
Flipdot-display/lib/BROSE9323
mangavalkandClaude Opus 5.5 fc6fa1a180 Add scrolling, countdown, stopwatch, images, seconds, multiplier and degree sign
- Text elements can scroll in a window at a set speed; clock, countdown and
  stopwatch can show seconds. Moving pages are sent as instant frames (new
  Nano command D1) and paced by the estimated flip time.
- Countdown to a date and time (smart, days, days + time, with seconds),
  stopwatch (web UI, HA switch and reset button), image element (fixed or
  by Home Assistant state), multiplier for HA values, degree sign (char 127)
  in all fonts and the font converter.
- Page format version 2; version 1 pages are converted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 21:01:14 +02:00
..

BROSE9323 driver

An Adafruit_GFX driver for Brose flipdot panels, shared by both firmware targets. The constructor is BROSE9323(width, height, panel_width, flip_time_us = 280). This project uses BROSE9323 display(84, 19, 28).

Build modes

Flag Used by Behaviour
(none) Nano Drives the panel through GPIO. Keeps an old and a new frame buffer and flips only the dots that changed.
-D ESPSERIAL ESP32 Holds no buffer. drawPixel, fillScreen, display and setTiming are sent as serial commands to the Stream passed to begin(&Serial).
-D FLIPDOT_PLCC_ADAPTER Nano (optional) Uses the pin mapping of the PLCC adapter board.

The flags are set per environment in platformio.ini through build_flags. Don't #define them in the header.

Notes

  • In direct mode (setDirect(true)) every pixel is flipped right away, without a call to display().
  • setGap(us) adds a pause after each flip pulse, setPulses(n) pulses each changed dot n times. Full redraws (display(true), the first display() after boot) pulse the dots that look unchanged only once.
  • setEffect(effect, ms): how display() shows a frame (RefreshEffect in dot_sequence.h). Anything but EFFECT_INSTANT runs in steps from update(), which must be called often; busy() says whether an effect is running. display(true) is always instant. On the ESP32 these calls become the G, N and E commands.
  • print() maps German umlauts (ÄäÖöÜüß) to the code page 437 glyphs used by the GFX font.
  • On an ATmega168 the old buffer is left out to save RAM. Every display() call then flips all dots.