LED Strip Lights


I bought some LED strip lights for Mum's conservatory, and I'm not overly impressed with the controller. There are only 5, very basic animations :

  1. Jump : Red, Green Blue
  2. Fade : Red, Green Blue
  3. Jump : Red, Green, Yellow, Blue, Magenta, Cyan, White
  4. Fade : Red, Green, Yellow, Blue, Magenta, Cyan, White
  5. Flash ( any colour flashing on/off ).

So I decided to make my own controller box, with much more variety.

The Box

The heart of the system is an Arduino, on top of which sits a custom board, with the following buttons :

  • Mode
  • Sequence
  • Ease
  • Edit
  • Add
  • Delete

Plus the following dials :

  • Speed
  • Red
  • Green
  • Blue

There is also a status LED used while editing sequences.


When you first turn it on, it cycles through the colours red, green and blue.

By repeatedly pressing the "Mode" button, the same three colours are animated in different ways. For example, one mode is like a heart beat; two pulses then a slightly longer pause For a list of the modes see below.

When you are bored of red, green and blue, press the "Sequence" button. This will show a different set of colours; the next sequence are the colours of the rainbow.

Bored again? Now try out the different "Ease" functions. Think of easing as how you travel from point A to point B. You could travel at constant speed ("Linear"), or maybe you start slow and speed up ("Ease In"), or start fast and slow down ("Ease Out"). You could even use a teleporter and get there in an instant ("Jump"). The full list of "Ease" functions are listed below.

The colour sequence, the mode and the ease are independent, so with 10 modes, 5 eases and 20 squences, that would give 1000 combinations.

At any time, you can turn the "Speed" dial. This alters the speed at which the colours change. The fastest is hypnotically fast, and at the slowest setting, you will think it's stopped! But if you are patient, you will see it gently fade from one colour to the next (assuming you are using the "Fade" mode - if you are using "Jump" mode, then it will stay static for ages, and then jump to the next colour).

The "Edit", "Add" and "Delete" buttons let you edit any of the sequences. If you aren't from the UK, the US, France or the Netherlands, you may like to change the "Patriot" sequence to match your own flag. All the sequences can be edited, and the changes are saved, so nothing is lost when you turn the lights out.

If you just want to display a single colour, without having to edit a sequence, then press the "Sequence" button till you get to the first one "Easy Single". This is a special sequence of one, and uses whatever colour you have selected using the RGB dials.

A sequence of just one colour does not mean that it is static, as many of the modes will cause the colour to flash in different ways. For example, twinkle, fade-out and white-out adds interest to a single colour.

List of Modes

  1. Fade (move from one colour to the next with nothing in between
  2. Fade-out (Turns the lights off between each colour)
  3. Heartbeat (Two pulses then a slightly longer pause)
  4. Whiteout (Full white between ease colour)
  5. Double Fadeout (On/Off On/Off for each colour)
  6. Quad Fadeout (As above, but doubled again)
  7. Double Whiteout (On/White On/White)
  8. Quad Whiteout (As above, but doubled again)
  9. Twinkle (Each colour is rapily turned on an off, like a twinkling star)
  10. Slow Twinkle (As above, but a slower twinkle)
  11. Alternate (violently flashes between pairs of colours)
  12. Slow Alternate (As above, but slower)

List of Eases

  1. Jump (Jump from one colour to the next without fading)
  2. Linear (A Simple fade)
  3. Ease In Quad (Fade slowly, then and get faster)
  4. Ease In Cubic (Fade really slowly and get faster)
  5. Ease In Quartic (Fade really, really slowly and get faster)
  6. Ease Out Quad (Fade quickly and then get slower)
  7. Ease Out Cubic (Fade really quickly and then get slower)
  8. Ease Out Quartic (Fade really, really quickly and then get slower)

List of default Sequences

  1. Red, Green, Blue
  2. Rainbow (Red, Orange, Yellow, Green, Cyan, Blue, Violet)
  3. Retro 8 Bit Gaming (Red, Green, Yellow, Blue, Magenta, Cyan, White)
  4. Patriot (Red, White, Blue, White)
  5. Breathe (Light Blue and White)
  6. Shades of Red (Low red, gradually getting to full brightness)
  7. Shades of Green (Low green, gradually getting to full brightness)
  8. Shades of Blue (Low blue, gradually getting to full brightness)
  9. Off
  10. White
  11. Easy Single (Displays the colour of the RGB dials)

You can edit all of these sequences, change/add/delete colours. You can also add new sequences. All changes after saved and restored when you next turn on the lights.

To reset the sequences, hold down the "Delete" button while you turn on the lights.


The Arduino sketch is available on GitHub, under the GPL V3 license.


I'm still prototyping this at the moment - I have a tiny breadboard with and not enough space for all the dials, switches etc. I have started using staples to connect to ground and +5V. It makes the board so much neater, but I'll regret it if I fry my arduino by shorting out a pin. Will my new larger breadboard arrive in time. Will I replace my hacky staples with an insulated equivalent?

I'm waiting for some components from China (including an IR sensor, so that I can control it using a remote control as well as the on-board controls).

Sorry, I have no circuit diagram yet.

Possible Improvements

  • IR Control - I'm waiting for a IR sensor from china...

This won't REPLACE the on-board controls, because using dials will be better than using a remove. However, it will be good to use the remote to quickly pick a static colour.

  • OLED Display - Display which Sequence/Mode/Ease you are on, plus given instructions while editing. Even I get confused about which mode and ease I'm on, and an OLED display will work just nicely. I also considered speech feedback - a speaker saying which mode as you scroll though. More expensive, and not as good as a display.