Public Access
Home Assistant: remove the Clock switch (its entity is deleted on connect), add an IP sensor and Mode / Off image dropdowns whose options follow the saved bitmaps. Remove the built-in "Nintendo border" bitmap. Off image: a bitmap (or blank) left on the dots when the display switches off. Nano: pause after each flip pulse and repeat pulses for changed dots, both stored in EEPROM (G/N commands). Refresh effects (E command): instant, sparkle, wipe, rain, from the middle out, diagonal, spiral, flip all then reveal, push and random, optionally only for small changes. Effects run in steps from loop() so serial input keeps flowing. Web UI: flip settings, refresh effect and test patterns under Settings; the System tab shows why the ESP32 last restarted. Settings records from versions 1 and 2 are migrated. Firmware 2.3.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 lines
1.7 KiB
Markdown
33 lines
1.7 KiB
Markdown
# 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.
|