Introduction: LED Strip Controller

About: Student Maker - Design Technology @ UWCSEA East Singapore - Brown Design Workshop

In this Instructable, I will be taking you through the steps of how to use and manage your LED strips by building a control interface. I have had a lot of fun with these lights as I am sure you will too. If you like this instructable, please be sure to vote for it in the Lighting Challenge!

With this controller, the user will be able to select different colors as well as actions such as blink, fade, and chase to their LED strip. The applications and adaptations are endless. Enjoy :)

Safety Considerations: when soldering, make sure to work in a well-ventilated area with a proper mat and safety glasses. Also, ensure the use of proper PPE when working with different tools throughout this tutorial.

*Other notes: This project does not include the housing but rather the circuit, code, and general interface. This gives you the freedom to design the housing as you see fit :)


  • LCD 20x04 Screen
  • I2C Module
  • Perf Board (9 x 15 cm)
  • Jumper Cables (M to F, M to M, F to F)
  • 6x 10k Ohm
  • Arduino USB Cable
  • 4x Large PTM Buttons
  • 2x Small PTM Buttons
  • 7x Small Junctions (Optional)
  • 3x M2 Screwa
  • 3x M2 Hex Nuts
  • 2x 12 V 1A Adapters
  • Arduino Uno Board
  • 5 - 10m of LED Strip Lights

Step 1: LCD, I2C, Arduino UNO and Perf Board

1. Solder the I2C module to the back of the LCD 20x04 display. The I2C module is used to communicate with an LCD screen without the need for a mess of wires. Do not worry about pin connections to the Arduino Uno yet.

2. Secure the LCD screen to the top of the perf board using M2 screws and hex nuts.

3. Secure the Arduino to the bottom of the perf board using M2 screws and hex nuts. It is very important that both these components are secure and do not move.

Step 2: Buttons + Initial Circuitry

1. Using male to female jumper cables, attach the pins to the ports on the Arduino as listed below:

  • GND (LCD) - GND (Arduino)
  • VCC (LCD) - 5V (Arduino)
  • SDA (LCD) - A4 (Arduino)
  • SCL (LCD) - A5 (Arduino)

2. Place the 4 large PTM (push-to-make) buttons in a square format as seen above on the perf board. There should be a top left, bottom left, top right, and bottom right button. No connections need to be made to these buttons yet.

Step 3: Setting Up the Main Buttons

Now it is time to attach these buttons to the Arduino. Ensure that you wire these in a neat fashion in order to keep the UI clear for the user.

1. Attach all the buttons to a common5V rail which is connected to the Arduino.

2. The other terminal of each button should be connected to the following Arduino UNO pins:

  • Top Left Button..........Pin 8
  • Bottom Left Button..........Pin 9
  • Top Right Button..........Pin 10
  • Bottom Right Button..........Pin 11

3. Finally, each terminal (not the 5V) should also be connected to a 10K Ohm pull-down resistor to GND in order to reduce floating voltage and noise.

Step 4: Additional Power Source + LED Strip

Unfortunately, LED strips are power-intensive and therefore require adequate sources of electricity. For this reason, I added a second 12V 1A adapter solely purposed to supply voltage to the strip. However, if you can get your hands on an adapter with a larger power rating, I would highly recommend it (I couldn't due to COVID-19 restrictions).

1. Strip the power adapter cable and attach the positive wire to the positive supply on the LED strip and GND to GND on the LED strip.

2. Using a jumper cable, ensure pin 6 on the Arduino is connected to the data cable on the LED strip. This is the pin that will tell the strip how to behave/what to display.

Step 5: Smaller Buttons

I added these smaller buttons to enable the user to adjust the speed of functions such as blink, fade, and chase. Pressing the button on top increases the speed of these actions by reducing the delay that separates these loops. Both these buttons are PTM and are an optional additional feature.

1. Place buttons onto the perf board and solder them in place. Understand which sides are opposite terminals using a multimeter just to be sure.

2. One side of both buttons should again be connected to a common 5V rail.

3. The other side of both buttons should be connected to the following Arduino pins:

  • Top Button (Decrease Speed) - Pin 12 Arduino
  • Bottom Button (Increase Speed) - Pin 13 Arduino

Step 6: Software Setup

In order to run the code, you will need to install the two libraries linked below.



If you already have these libraries, go to 'Tools', then 'Library Manager', then search for these libraries and click either 'Install' or 'Update' as seen above.

Step 7: The Code

Download, copy, and paste the code below in your Arduino IDE and upload it to the board. Connect the 12V power source to the board and if everything is in place, the screen should light up with the message: 'LED STRIP CONTROLLER'.

If you face any problems with any part of the process, please feel free to ask a question in the comment section below and I will do my best to answer.

Step 8: Finished!

You are DONE! Enjoy :)

Lighting Challenge

Participated in the
Lighting Challenge