USB Controlled RGB LED
The article on my RGB LED fader has been one of the most-visited articles on this blog. Since posting it, I've designed and built another microcontroller-based RGB LED project, this time controlling the colors from the computer over USB.
View video: Ogg Theora | YouTube
Here's the schematic:
The avr source is in the avr/ directory. It uses the OBDEV AVR-USB/V-USB library and the source tree is based on OBDEV's example code.
Read the V-USB docs for more information.
The AVR needs to be overclocked to run the USB code without a separate oscillator. The osccal.c source file watches the USB frame clock and calibrates the AVR internal RC oscillator with the OSCCAL register. This technique was adapted from the V-USB wiki.
The host sources are in the host/ directory. A 32bit Linux binary is included, or it can be built from source with the included Makefile. Libusb is required.
Run it with
sudo ./ledcontrol. It accepts lines on stdin of the format
0 <red val> <green val> <blue val> with color values ranging from 0-31.
The python scripts included can be piped into ledcontrol for a variety of control methods:
rand.pyblinks the LED randomly.
anim1.pyruns a countdown-like animation
colorgui.pyis a pygtk app that displays a control window allowing you to choose colors graphically
The demo shown in the video can be run with
python colorgui.py | sudo ./ledcontrol.
Download source code
My next step is a multi-LED panel...