pr0LED is a self-made ambient light that is controllable with a common PC.

pict0175cut

The core of the circuit is a C8051F303 from SiLabs. This 8-pin microcontroller with 24.5 MHz controls the D-flipflop for the LED channels over a 4-to-16 decoder. Each of these 8 LED channels could theoretically provide an unlimited number of so called LED blocks, which are connected over a 9-pin flatcable. A LED block consists of a small breadboard with connectors to the flatcable, a transistor array and for each color a LED with resistor. The number of blocks could be optimized for the individual application.

pict0129
The color value for each LED is set through a serial RS232 connection - in my assembly, for example, with a normal personal computer. For Linux, I wrote a small daemon which has a few programs built-in and controls the microcontroller. The daemon itself listens on a TCP/IP socket and waits for program switches from a user interface, like, in my case, a small program which resides in the system tray of the desktop.

The first firmware of the microcontroller was written in C. Due the fact that this was too slow for the required pulse width modulation (PWM) in software, I've rewritten the important routines in assembler.

The daemon is written in C, the controller in the system tray in C++.