How to Control RGB LEDs With Arduino
by Lisleapex Blog in Circuits > Arduino
124 Views, 1 Favorites, 0 Comments
How to Control RGB LEDs With Arduino
In this guide, you will learn how to control an RGB LED using an Arduino. An RGB (Red-Green-Blue) LED can produce a variety of colors by mixing different intensities of red, green, and blue light. You will learn to create a basic Arduino RGB LED circuit and cycle through some basic colors as examples.
Using the provided schematic and breadboard images, along with the example code below, you should have everything you need to easily setup and control the color output of an RGB LED.
Supplies
Connect an RGB LED to an Arduino
Here is the schematic for the circuit. This diagram uses three resistors and a common anode RGB LED (you'll find the schematic for common cathode below).
If you are using common anode LEDs, you will need to connect the common anode pin to 5V like this:
Steps to Connect the Circuit on a Breadboard
If you are using a common cathode RGB LED, connect the cathode to the GND pin on the Arduino. If your RGB LED is common anode, connect the anode to the 5V pin on the Arduino.
Connect the red, green, and blue legs of the LED to pins 11, 10, and 9 of the Arduino respectively, each through a 220 ohm resistor.
Make sure your Arduino is connected to your computer via a USB cable.
Use one of the breadboard images below as a visual guide for setting up the connections.
Common cathode RGB LED connected to Arduino.
Upload the Arduino RGBLED Code
Upload the code below to your Arduino using the ArduinoIDE and you should see the LED cycle through different colors, stopping for one second for each color.
Full Arduino code for RGBLED (common cathode):
int redPin= 11;
int greenPin = 10;
int bluePin = 9;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
setColor(255, 0, 0); // Red Color
delay(1000);
setColor(0, 255, 0); // Green Color
delay(1000);
setColor(0, 0, 255); // Blue Color
delay(1000);
setColor(255, 255, 0); // Yellow Color
delay(1000);
setColor(0, 255, 255); // Cyan Color
delay(1000);
setColor(255, 0, 255); // Magenta Color
delay(1000);
setColor(255, 165, 0); // Orange Color
delay(1000);
setColor(128, 0, 128); // Purple Color
delay(1000);
setColor(255, 255, 255); // White Color
delay(1000);
}
void setColor(int redValue, int greenValue, int blueValue) {
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
}
If you are using a common anode RGBLED, the logic is reversed compared to a common cathode RGBLED. In a common cathode RGBLED, you provide power (HIGH) to a specific pin to turn on a color. For a common anode RGBLED, you connect a specific pin to ground (LOW) to turn on a color.
So, with a common anode RGBLED, to set the color, you need to subtract each color value from the maximum value (i.e. 255) before applying it. This inversion ensures that a value of 255 (full intensity) for a specific color will cause that color to be turned off, while a value of 0 (no intensity) will cause that color to be fully turned on.
Complete Arduino Code for RGBLED (Common Anode)
int redPin= 11;
int greenPin = 10;
int bluePin = 9;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
setColor(255, 0, 0); // Red Color
delay(1000);
setColor(0, 255, 0); // Green Color
delay(1000);
setColor(0, 0, 255); // Blue Color
delay(1000);
setColor(255, 255, 0); // Yellow Color
delay(1000);
setColor(0, 255, 255); // Cyan Color
delay(1000);
setColor(255, 0, 255); // Magenta Color
delay(1000);
setColor(255, 165, 0); // Orange Color
delay(1000);
setColor(128, 0, 128); // Purple Color
delay(1000);
setColor(255, 255, 255); // White Color
delay(1000);
}
void setColor(int redValue, int greenValue, int blueValue) {
analogWrite(redPin, 255 - redValue);
analogWrite(greenPin, 255 - greenValue);
analogWrite(bluePin, 255 - blueValue);
}
How the Code Works
This code first sets up the RGBLED pins via the variables redPin, greenPin, and bluePin. Change these if you are using different pins than in the example circuit.
Then the code lights up the RGBLED in red, green, blue, yellow, cyan, magenta, orange, purple, and white, pausing for one second on each color.
Conclusion
Try different color combinations by changing the values in the function! Remember that an RGB LED combines red, green, and blue light to produce a variety of colors. You can now create a colorful display using an Arduino and an RGB LED!