Connect and use an RGB LED with an Arduino

Got Questions? Click here and post them in the Brainy-Bits Forum to get help!

OVERVIEW

 

RGB LEDs are a fun and easy way to add some colour to your projects.  Since they are like 3 regular LED in one, the way to use and connect them is not much different.

 

They come mostly in 2 versions:  Common Anode or Common Cathode.

 

Common Anode uses 5V on the common pin, while Common Cathode connects to Ground.

 

As with any LED, we need to connect some resistors inline (3 total) so we limit the current being drawn.

 

In our sketch we will start with the LED in the Red colour state, then fade to Green, then fade to Blue and finally back to the Red colour. By doing this we will cycle through most of the colour that can be achieved.



SCHEMATIC

How to use and connect RGB LED with Arduino

The RGB LED we are using is a Common Anode, so it requires 5V to the common pin.

* If we were using a Common Cathode, we would connect it to Ground(GND) instead.

 

We are using 3 resistor to limit the current drawn for the Red, Green, Blue pins.  Each of them are 330 Ohms.

 

The connections are:  Pin3-Pin1(red), 5V-Pin2(Anode), Pin5-Pin3(blue), Pin6-Pin4(green).



THE CODE

 

Our code will use FOR loops to cycle through the colors.

 

The First FOR loop will go from RED to GREEN

The Second FOR will go from GREEN to BLUE

and finally the last FOR will go from BLUE to RED.

 

As always you can watch our Tutorial video on this page to get more information about the code used.

// Define Pins
#define RED 3
#define GREEN 5
#define BLUE 6

#define delayTime 50 // fading time between colors


void setup()
{
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, HIGH);
}

// define variables
int redValue;
int greenValue;
int blueValue;


// main loop
void loop()
{
  redValue = 255; // choose a value between 1 and 255 to change the color.
  greenValue = 0;
  blueValue = 0;

  analogWrite(RED, 0);
  delay(5000);

   for(int i = 0; i < 255; i += 1) // fades out red bring green full when i=255
  {
    redValue -= 1;
    greenValue += 1;
    analogWrite(RED, 255 - redValue);
    analogWrite(GREEN, 255 - greenValue);
    delay(delayTime);
  }

  redValue = 0;
  greenValue = 255;
  blueValue = 0;

  for(int i = 0; i < 255; i += 1)  // fades out green bring blue full when i=255
  {
    greenValue -= 1;
    blueValue += 1;
    analogWrite(GREEN, 255 - greenValue);
    analogWrite(BLUE, 255 - blueValue);
    delay(delayTime);
  }

  redValue = 0;
  greenValue = 0;
  blueValue = 255;


  for(int i = 0; i < 255; i += 1)  // fades out blue bring red full when i=255
  {
  redValue += 1;
  blueValue -= 1;
  analogWrite(RED, 255 - redValue);
  analogWrite(BLUE, 255 - blueValue);
  delay(delayTime);
  }
}



TUTORIAL VIDEO



DOWNLOAD

 

Copy and paste the above code in the Arduino IDE to program your Arduino.

Got Questions? Click here and post them in the Brainy-Bits Forum to get help!

Leave a comment

Comments have to be approved before showing up