The CodaChrome System

System Architecture

The CodaChrome system consists of hardware components and a desktop software currently written in Java, and firmware and software on the Foundation itself. The application communicates with the Tower through the serial port in order to obtain the ID’s of the connected Tricolor modules and to send color sequences and transition times to be stored and played on the Tower. The Tower can then be disconnected from the computer and can reproduce the stored patterns on its own.

 

A. CodaChrome hardware components: Tricolor LED module

The core of the CodaChrome's hardware is the Tower System, a modular electronics design environment that allows easy snap-together design of complex electronics systems. The Tower is comprised of a Foundation module with the core processor on it, and other boards that stack on top of it, providing a wide range of functionality including sensing, actuation, data storage, and communication.

The CodaChrome system uses a particular extension of the Tower system, the "Tricolor" module. The Tricolor module has a single full-spectrum LED capable of displaying million of colors, and its small size makes it easy to embed in a variety of materials. Each Tricolor module has four connectors to connect to other tricolor modules and on the Tower itself, allowing for the creation of interesting chains and three-dimensional topologies.
In addition to the Tricolor modules, the CodaChrome system also uses the Tower’s preexisting Sensor and EEPROM data storage layers.

 

B. CodaChrome Software Application

I have created an early prototype of the CodaChrome software environment in order to use it in the preliminary studies. This application handles the end-user interface to the system and the visual programming of the LEDs. 
In this version two color palettes are used for the LED programming, one with discrete colors and the other with a continuous spectrum. The overall color changing speed can be set by the user on a scale from slower transition to a faster one. 

The first one produces a combined definition of color sequence and transition time in one gesture by dragging the mouse on the palette. The color sequence is defined by the palette color gradations along the mouse trace. The transition time between two colors is defined by the speed of the gesture. 

The discrete color palette is used for entering a number of specific colors where the order of selection specifies the color sequence with equal time intervals of transition between colors.

Software Application: New version

In the new version of the CodaChrome environment there are more widgets for the creation of the color patterns. On the lower part of the screen is the timeline component for sequencing and synchronizing the color patterns that are dragged on it. Each of the layers on the timeline component represents the tricolor LED modules connected to the attached Tower system. 

 

Software Application: Logo program and connection to the Tower

public int[] getLEDIDs();; 
//get the IDs of the connected to the Tower Tricolor modules

public int getLightSensorValue(byte num); 
//return the light sensor value from the Tower

public byte getOpticalValue(); 
//return the optical distance sensor value

public void setTricolor(byte id, byte r, byte g, byte b, byte time);
//the basic primitive that makes the transition from the current color to the specified RGB value (r,g,b) in the designated amount of time (time)

public void play();
//start looping the color patterns on all the Tricolor modules

public void stopPlay();
//stop the looping of the color patterns

public void download(LEDLoop[] loops);
//download the vector with the RGB values and the transition times for all the Tricolor modules

public void setBoardID(byte newID); 
//set the unique ID to each Tricolor module

public boolean isLEDConnected(byte id);
//check if Tricolor modules have been disconnected

The Tower Foundation runs a Virtual Machine (VM) that interprets a variant of the Logo language, using simple libraries to communicate with attached layers. On this platform, a Logo program manages the communication with the desktop in order to identify the connected Tricolor modules and store and play color sequences.

For the purposes of communication an interface to the CodaChrome Application (written in Java) was written to separate and abstract the application from the program in Logo running on the Tower.

Some of the methods of this interface are shown here.