Mood light (RGB) controller with 500mA outputs

From CaveLab
Mood light controller v1.1

Turn any RGB LED into a mood light with this controller. Uses an AVR ATmega8 microcontroller.


The mood light controller can control all kinds of RGB light, max 500mA pr. channel. The module has no voltage regulator and therefore needs 5V=, and enough current to drive the circuit and the connected LEDs. It very slowly cycles through different colors, fading one LED up or down leaving the previous LED turned on. The module can power Prolight LEDs, like Mood light using 3W Prolight RGB LED.

In firmware version 1.2, the light patterns was replaced with only one, and the operation of the DIP-switches was removed, simply because I didn't ever use them.

The controller very slowly cycles through colors, fading one LED at the time. It happens so slowly that it's hard to notice the change at all.

  1. Fade in blue color in about 12 seconds (only on first start up).
  2. Increase red.
  3. Decrease blue.
  4. Increase green.
  5. Decrease red.
  6. Increase blue.
  7. Decrease green.
  8. Go to step #2.

The fade time for each color is random and varies between 1 and 3 minutes, and changes between each fade.

A bit of history

Prior to firmware version 1.2 the mood light controller had different light patterns that was controlled with the four DIP switches:

  1. Pause between color change (long/short)
  2. Fade speed when changing color (long/short)
  3. Color change fade (on/off)
  4. Color mode (one color/multi color) 1
1 One color means that one color is stable at the time, this gives three colors. Multi color has two stable color at the time, and this gives six colors (red, yellow, green, cyan, blue and purple).

After using the light for a few years, I hadn't changed the light pattern once... And I would like for it to be more subtle. I made a new pattern, and didn't bother spending time to write code for the DIP switches I wasn't using anyways.



  1. PC.2 DIP-Switch 1 (Not used from v1.2)
  2. PC.3 DIP-Switch 2 (Not used from v1.2)
  3. PC.4 DIP-Switch 3 (Not used from v1.2)
  4. PC.5 DIP-Switch 4 (Not used from v1.2)


  1. PB.1 (OC1A) Red LED (PWM)
  2. PB.2 (OC1B) Green LED (PWM)
  3. PB.3 (OC2) Blue LED (PWM)


To make it easy to attach and detach lights, the module has a connector for the RGB light. Mood-light-rgb-connector-4nmm9q.png

Source code

Bascom-AVR source is available in a git repository:


Schematic drawing


Parts list

Qty. Part
1 × AVR ATmega8-16PU, DIL-28, 16 MHz, 23 I/Os
1 × Cable tie mount, screw, 5.1 mm, White
1 × Capacitor, aluminium electrolytic, 10 µF, 25V
1 × Capacitor, aluminium electrolytic, 22 µF, 25V
1 × Capacitor, ceramic, 1 nF, 100V
1 × DIL socket, 28-pin, 7.62mm
1 × Diode, rectifier, 1 A, 400V, 1N4004
1 × Enclosure, plastic (1591), 100x50x25mm
1 × Fuse 5x20 mm, 800 mA, fast-acting
1 × Fuse holder, open, PCB, 5x20mm
1 × Fuse holder, open, PCB, Protective cover
32 cm2 PCB, stripboard, 100x160mm, 160cm2
1 × Power jack, panel, 2.1mm, plastic housing
4 × Resistor, carbon film, 0.25W, 330 Ω, 5%
4 × Resistor, carbon film, 0.25W, 4.7 kΩ, 5%
4 × Resistor, carbon film, 0.25W, 10 kΩ, 5%
4 × Rubber foot, adhesive, SJ-5012, Ø 12.7x3.5 mm
1 × Switch, DIP, PCB, 4-pin
1 × Terminal block, pluggable, 3.5 mm, 4-pin vertical male
3 × Transistor, NPN, 800 mA, 45V, 0.625W, BC337-25