A simple stream protocol for controlling arrays of RGB lights.
C Python Java Processing HTML CSS Makefile
Pull request Compare This branch is 24 commits ahead, 31 commits behind zestyping:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



A simple stream protocol for controlling RGB lighting, particularly RGB LEDs. See http://openpixelcontrol.org/ for a spec.

Using this implementation, you can write your own patterns and animations, test them in a simulator, and run them on real RGB light arrays. This repository includes these programs:

  • dummy_client: Sends OPC commands for the RGB values that you type in.

  • dummy_server: Receives OPC commands from a client and prints them out.

  • gl_server (Mac or Linux only): Receives OPC commands from a client and displays the LED pixels in an OpenGL simulator. Takes a "layout file" that specifies the locations of the pixels in a JSON array; each item in the array should be a JSON object of the form {"point": [x, y, z]} where x, y, z are the coordinates of the pixel in space.

  • tcl_server: Receives OPC commands from a client and uses them to control Total Control Lighting pixels (see http://coolneon.com/) that are connected to the SPI port on a Beaglebone.

  • python_clients/opc.py: A python library for connecting and sending pixels.

  • python_clients/color_utils.py: A python library for manipulating colors.

  • python_clients/raver_plaid.py: An example client that sends rainbow patterns.

To build these programs, run "make" and then look in the bin/ directory.


Step 1. If you're using Linux, first get the dependencies you need (Mac users skip to step 2):

apt-get install mesa-common-dev freeglut3-dev

Step 2. Compile and start the GL simulator using the example "Freespace" layout:

bin/gl_server layouts/freespace.json

Step 3. Then in another terminal window, send colors to the simulator: