$ show owenmcateer/FlipDots
This repository is a control system for AlfaZeta FlipDot display panels, electromagnetic dot matrix displays that physically flip dots to show images. It provides both Processing (Java) and Node.js implementations that convert image data to the specific binary format required by the displays and transmit it via serial/USB or Ethernet connections. The system includes a virtual display buffer for drawing animations and games, with examples like Tetris, clock effects, and procedural visualizations. When no physical hardware is connected, it operates as a simulator. The architecture separates core display logic, hardware communication, configuration, and example content into modular components.
The LLM identified 3 files worth highlighting for reuse:
Represents a single FlipDot panel with position mapping and change detection optimization. The class efficiently tracks which pixels have changed to minimize data transmission, handles coordinate translation from virtual display to panel coordinates, and manages the binary buffer format required by the hardware. This pattern could be extracted for use with other grid-based display systems.
Abstracts the hardware communication layer to support both serial/USB and Ethernet connections through a unified interface. The implementation cleanly separates the display logic from the physical transport mechanism, allowing the same core code to work with different connection types. Demonstrates good encapsulation of protocol-specific details while maintaining a simple API for sending frame data.
Contains the core image conversion logic for transforming RGB data to the binary format required by FlipDot displays. The convertRGBToBW and createBuffer functions efficiently process image data through grayscale conversion, thresholding, and bit-packing into column-oriented bytes. This self-contained image processing pipeline could be reused with similar displays that require bit-packed column data.