Public Access
2.0 KiB
2.0 KiB
Arduino Nano: flipdot driver
PlatformIO environment: nano
The Nano is connected directly to the Brose panel electronics. It keeps an 84 × 19 frame buffer and takes drawing commands over serial (115200 baud). It has no clock or network logic.
Behaviour
- Boot: the Nano flips the whole display on and then off, then prints the time a full redraw took.
display(): compares the new buffer with the last one that was shown and strobes only the dots that changed.- Every 2 minutes (
REFRESH_TIME) it forces a full redraw to fix dots that got stuck. - Flip pulse length (µs) is set with the
Tcommand and stored in EEPROM, so it is kept after a reboot.
Serial protocol
Each command is one ASCII line. Coordinates are 2-digit hex. Color is 0 (black) or
1 (yellow). The ESP32 driver (ESPSERIAL) only uses s, S, F, D and T.
| Cmd | Format | Meaning |
|---|---|---|
s |
sXXYYc |
Set pixel in the buffer |
S |
SXXYYc |
Set pixel and flip it right away (direct mode) |
F |
Fc |
Fill the whole buffer |
D |
D |
Push the buffer to the display (changed dots only) |
P |
PXXYYcsTEXT |
Print text at (XX,YY), color c, size s. \n in TEXT starts a new line. |
B |
BXXYYWWHHcHEX... |
Draw a bitmap. WW must be a multiple of 4. Pixel data is one hex digit per 4 pixels. |
R |
R |
Print the buffer as ASCII art on the serial port |
T |
Tnnn |
Set the flip pulse length in µs (decimal), stored in EEPROM |
Example (what the ESP32 sends for one pixel and a refresh):
s0a051
D
Wiring (default pinout)
The pins are defined in lib/BROSE9323/BROSE9323.h.
If you use the PLCC adapter board, build with -D FLIPDOT_PLCC_ADAPTER to switch to its
pinout.
| Signal | Nano pin |
|---|---|
| ENABLE | D7 |
| ADDR_0 / 1 / 2 (panel select) | D3 / D5 / D6 |
| COL_DATA | D4 |
| COL_0 … COL_4 | D8, D10, D9, D11, D12 |
| ROW_0 … ROW_4 | A3, A4, A2, A0, A1 |
| ROW_RESET | D13 |
| ROW_SET | A5 |
| Serial RX | D0 (from ESP32 TX) |