Arduino Nano - LED Strip

In this tutorial, we are going to learn how to program Arduino Nano to control a LED strip to emit the light.

Hardware Preparation

1×Arduino Nano
1×USB A to Mini-B USB cable
1×Relay
1×12V 1-color LED Strip
1×12V RGB LED Strip
1×12V Power Adapter
1×DC Power Jack
1×Jumper Wires
1×(Alternative) 24V 1-color LED Strip
1×(Alternative) 24V RGB LED Strip
1×(Alternative) 24V Power Adapter
1×(Optional) 5V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

Or you can buy the following sensor kit:

1×DIYables Sensor Kit 30 types, 69 units
Disclosure: Some of the links provided in this section are Amazon affiliate links. We may receive a commission for any purchases made through these links at no additional cost to you. We appreciate your support.

Overview of LED Strip

A LED strip, also known as LED tape or LED ribbon, is a flexible circuit board with surface-mounted LEDs that emit light. These strips are versatile and commonly used for decorative lighting in various applications. LED strips come in a range of colors and are often used to provide ambient lighting, accent lighting, or decorative lighting effects.

LED strips come in two main types:

  • Addressable LED Strips: In this type, the color and brightness of each individual LED on the strip can be independently controlled. This capability is due to the fact that each LED is assigned a specific address.
  • Non-Addressable LED Strips: In contrast, non-addressable LED strips allow control over the color and brightness, but this control applies uniformly to all LEDs on the strip.

This tutorial will focus on the Non-Addressable LED Strips. For Addressable LED Strips, please refer to the following tutorials:

Non-Addressable LED Strip Pinout

Non-Addressable LED Strip has two main types:

  • Non-Addressable 1-color LED strip: Only one color defined by manufacturer.
  • Non-Addressable RGB LED strip: any colors

A Non-Addressable 1-color LED Strip usually has two pins:

  • 12V/24V pin: needs to be connected to the positive pin of 12V or 24V DC power supply
  • GND pin: needs to be connected to the negative pin of 12V or 24V DC power supply

A Non-Addressable RGB LED Strip usually has four pins:

  • 12V/24V pin: needs to be connected to the positive pin of 12V or 24V DC power supply
  • R pin: This pin is used to control the red color. Connecting this pin to the negative pin of the power supply enables the red color
  • G pin: This pin is used to control the green color. Connecting this pin to the negative pin of the power supply enables the green color
  • B pin: This pin is used to control the blue color. Connecting this pin to the negative pin of the power supply enables the blue color
Arduino Nano non-addressable led strip Pinout

We will learn how to control the both types by Arduino Nano one-by-one.

How to Control a Non-Addressable 1-color LED strip.

If 12V LED strip is powered by 12V power supply, it emits light. To control a 12V LED strip, we need to use a relay in between Arduino Nano and 12V LED strip. Arduino Nano can control the 12V LED strip via the relay. Unfamiliar with relay, including their pinouts, functionality, and programming? learn about relay in the Arduino Nano - Relay tutorial

Wiring Diagram.

Wiring Diagram between Arduino Nano and Non-Addressable 1-color LED strip.

The wiring diagram between Arduino Nano and 12V LED strip

This image is created using Fritzing. Click to enlarge image

Wiring Diagram between Arduino Nano and Non-Addressable RGB LED strip.

The wiring diagram between Arduino Nano and 12V LED strip

This image is created using Fritzing. Click to enlarge image

Arduino Nano Code

Arduino Nano Code for controlling Non-Addressable 1-color LED strip.

The below code repeatedly turns the LED strip ON in 5 seconds and OFF in 5 seconds,

/* * This Arduino Nano code was developed by newbiely.com * * This Arduino Nano code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/arduino-nano/arduino-nano-led-strip */ #define LED_STRIP_PIN D5 // The Arduino Nano pin controls to the LED strip via relay void setup() { Serial.begin(9600); // initialize Arduino pins as digital output pins pinMode(LED_STRIP_PIN, OUTPUT); } // The loop function repeats indefinitely void loop() { Serial.println("The LED strip is turned on"); digitalWrite(LED_STRIP_PIN, HIGH); delay(5000); Serial.println("The LED strip is turned off"); digitalWrite(LED_STRIP_PIN, LOW); delay(5000); }

Arduino Nano Code for controlling Non-Addressable RGB LED strip.

The below code repeatedly control the color of the RGB LED strip (red, green, blue, yellow, magenta, cyan and white)

/* * This Arduino Nano code was developed by newbiely.com * * This Arduino Nano code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/arduino-nano/arduino-nano-led-strip */ #define BLUE_PIN D6 // The Arduino Nano pin connects to the blue pin of LED strip via relay 1 #define RED_PIN D5 // The Arduino Nano pin connects to the red pin of LED strip via relay 2 #define GREEN_PIN D4 // The Arduino Nano pin connects to the green pin of LED strip via relay 3 void setup() { Serial.begin(9600); // initialize Arduino pins as digital output pins pinMode(BLUE_PIN, OUTPUT); pinMode(RED_PIN, OUTPUT); pinMode(GREEN_PIN, OUTPUT); } // The loop function repeats indefinitely void loop() { Serial.println("The LED strip is turned red"); digitalWrite(BLUE_PIN, LOW); digitalWrite(RED_PIN, HIGH); digitalWrite(GREEN_PIN, LOW); delay(2000); Serial.println("The LED strip is turned green"); digitalWrite(BLUE_PIN, LOW); digitalWrite(RED_PIN, LOW); digitalWrite(GREEN_PIN, HIGH); delay(2000); Serial.println("The LED strip is turned blue"); digitalWrite(BLUE_PIN, HIGH); digitalWrite(RED_PIN, LOW); digitalWrite(GREEN_PIN, LOW); delay(2000); Serial.println("The LED strip is turned yellow"); digitalWrite(BLUE_PIN, LOW); digitalWrite(RED_PIN, HIGH); digitalWrite(GREEN_PIN, HIGH); delay(2000); Serial.println("The LED strip is turned magenta"); digitalWrite(BLUE_PIN, HIGH); digitalWrite(RED_PIN, HIGH); digitalWrite(GREEN_PIN, LOW); delay(2000); Serial.println("The LED strip is turned cyan"); digitalWrite(BLUE_PIN, HIGH); digitalWrite(RED_PIN, LOW); digitalWrite(GREEN_PIN, HIGH); delay(2000); Serial.println("The LED strip is turned white"); digitalWrite(BLUE_PIN, HIGH); digitalWrite(RED_PIN, HIGH); digitalWrite(GREEN_PIN, HIGH); delay(2000); }

Detailed Instructions

  • Wire the components according to the provided diagram.
  • Connect the Arduino Nano board to your computer using a USB cable.
  • Launch the Arduino IDE on your computer.
  • Select the Arduino Nano) board and its corresponding COM port.
  • Connect Arduino Nano to PC via USB cable
  • Open Arduino IDE, select the right board and port
  • Copy the above code and open with Arduino IDE
  • Click Upload button on Arduino IDE to upload code to Arduino Nano
  • Check out the LED strip's state

Code Explanation

Read the line-by-line explanation in comment lines of code!

Please note that, to control the brightness an other colors of non-addressable LED strip, we need to use the L298N driver instead of relay

Video Tutorial