Skip to content

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

License

Notifications You must be signed in to change notification settings

bhaskarsuper9000/flipdot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flipdot Simulator and Driver

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

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

Install the required libraries with pip:

$ make init

(this just does pip install -r requirements.txt).

In one terminal window, run the display simulator:

$ make sim

In another, run the demo application, specifying UDP as the communications mechanism:

$ make demo

Samples

$ python sim.py

 -----------------------------------------------------------
|                                                           |
|                                                           |
|                                                           |
|             * *     * *   * * *       * *                 |
|             * *     * * * *   * *     * *                 |
|               * * * *   * *   * *     * *                 |
|                 * *     * *   * *     * *                 |
|                 * *     * *   * *                         |
|               * * * *     * * *       * *                 |
|                                                           |
|                                                           |
|                                                           |
|                                                           |
|                                                           |
 -----------------------------------------------------------

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. The code should be fine on Python 2.7.X and Python 3.6.X.

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 98.9%
  • Makefile 1.1%