Skip to content
forked from dcreemer/flipdot

PIL-based driver and simpulator for the Alfa-Zeta Flip-Dot display

License

Notifications You must be signed in to change notification settings

tuna-f1sh/flipdot

 
 

Repository files navigation

Flipdot Simulator and Driver

Implements a Pillow (Python Imaging Library friendly fork) driver and simulator for the Flip-Dot XY5 Display from AlphaZeta.

Heavily modified and brought upto date fork of dcreemer/flipdot.

The Flip-Dot Display

The XY5 Display can be thought of as a bitmaped screen. It consists of mechanical flipping "dots," laid out in an XY grid. The display is made up of a number of individual panels, where each panel is 7x28 pixels. Each panel has a controller, and the controllers may be daisy-chained. Controllers connect to driver computers via RS-485. On a single daisy-chain, each panel gets a unique numeric address (0, 1, 2, etc..).

The protocol to control a panel is not well-documented. Essentially each column of 7 pixels (in a 7x28 board) is a controlled by a single byte, using the lower seven bits. The packet header includes panel address information, as well as other meta-data. The protocol is outlined more in the reference code from Alfa-Zeta.

Driver

For developing interesting visualizations, it's much nice to treat a collection of panels as an 1-bit-per-pixel arbitrary XY image. This software implements that abstraction using the Python Imaging Library. Image data is rendered into an image, and then periodically that image is converted to Flip-Dot display protocol and sent to the panels. To make development easier, this software also implements a curses-based simulator of the display that communicated via UDP. Develop on a local computer, then try it out on a real display.

Usage

# Create virtualenv and install the required libraries with pipenv:
pipenv install
# Run the simulator in one window
pipenv run python flipdot/sim.py
# In another, run the demo application (defaults to same setup as simulator):
pipenv run python flipdot

See --help arg for more usage

pipenv run flipdot/sim.py --help
pipenv run python flipdot --help

Samples

 ----------------------------------------------------------
| ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ● ● ○ ○ ● ● ○ ● ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ● ● ○ ○ ● ● ● ● ○ ● ● ○ ○ ● ● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ○ ● ● ● ● ○ ● ● ○ ● ● ○ ○ ● ● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ○ ○ ● ● ○ ○ ● ● ○ ● ● ○ ○ ● ● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ○ ○ ● ● ○ ○ ● ● ○ ● ● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ○ ● ● ● ● ○ ○ ● ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
| ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○  |
 ----------------------------------------------------------

Here is a sample video:

sample flip-dot video

(click the image to play it). It shows this software running a live Flip-Dot display, cycling through headlines derived from Flipboard.

Develop

See the demo.py file for examples, but in general, anything that can be written to a Python Imaging Library 1-bit image can be sent to the display.

License

BSD 3-Clause. Note that the included font "VeraBd.ttf" is from here and subject to its own license.

About

PIL-based driver and simpulator for the Alfa-Zeta Flip-Dot display

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%