RGB mood light


I've created a lot of simple RGB controllers before there were satisfying, commercial solutions available.

This one was my last attempt from 2007 to make a universal, simple controller without unnecessary features.

The device is somehow obsolete now since I switched to the milight system. 



  • a set of predefined colours
  • LCD
  • rotary encoder
  • seperated control unit/driver
  • remote control
  • smooth fading (0.5s) between manual color select, non-blocking
  • autofader (~5s), using predefined colors
  • temperature control
  • manual RGB level mode
  • random colors
  • logarithmical brightness control for each mode/color
  • NO annoying flash/strobe effects



Example Setup

More Details


  • predefined colors
Instead of just fading through R->G->B, I am using a static set of colors, for both autofading and manual select.



  • seperated control unit/driver
No need for thick cables, just one cheap standard USB AB cable from the control unit to the driver.



  • fading
Switching between colors looks crappy. I implemented a fader with variable fading length, fast for manual switching, slow for the auto fader. It does not block any interaction, it just adapts the current output setting to a given setting the whole time.



  • temperature control
The ambient air temperature is converted to 18 color levels from blue (~17°C) over green to red (~25°C)



  • logarithmical brightness control for each mode/color
The subjective perception of brightness is (nearly) logarithmical, you must pay attention to this if you want a linear scale.


Control Unit

Schematics still need to be drawn :)
source code
Note: this is an old beta with linear scale, the most recent version will follow soon.
The lcd lib works for hd44780 lcds.

Remote Control

The remote control is a cheap 4 channel module. It has 5 outputs: channel 1-4 (T/D-latch type) and one called "VT" which is high as long as a button is pressed. Because the outputs are t-latches, you have to XOR current and last state whenever VT goes high in order to get the pressed button.

Temperature Sensor

The sensor is a KTY81-120, wired this way:
Of course, not very accurate, but enough for this purpose.


The driver couldnt be any easier: 3x BD131 (NPN), 3x 470R (base) and plugs for the LED modules (molex), power supply (dc plug) and controller (usb).