Controlling common Anode RGB LED with Arduino Nano.
Github: https://github.com/Ramyar2208/RGB-Led-with-Arduino-Nano.git
Component List:
- RGB led - common Anode
- Arduino Nano
- Resistors
Resistors used: Red - 82 ohm, Green - 56 ohm, Blue - 56 ohm. Allowing approximately 20 mA to flow through LED.
Connection: Red pin to D9, Green pin to D10, Blue Pin to D11, common pin to 5V of Nano
Working:
Cathode (-) pins of RGB are connected to 8-bit PWM pins of Arduino for voltage control. Providing a value of 0 means grounding the respective pin and turning the respective color ON.
Giving a value of 255 means 5v being applied to the pin, turning OFF the respective color.
So the value of 0 - 255 allows to control the intensity of the color.
By controlling the cathode voltage of all 3 pins, different colors can be made in a RGB led.
Arduino IDE code:
#define RedLED 9                   // D9 Pin      
#define BlueLED 11                 // D10 Pin     
#define GreenLED 10                // D11 Pin    
void setup()
{
pinMode(RedLED, OUTPUT);
pinMode(BlueLED, OUTPUT);
pinMode(GreenLED, OUTPUT);
// Initiate RGB
analogWrite(RedLED, 255);
analogWrite(BlueLED, 255);
analogWrite(GreenLED,255);
/* White Color */
analogWrite(RedLED, 0);
analogWrite(BlueLED, 0);
analogWrite(GreenLED,0);
delay(200);
}
void loop() 
{
  uint8_t Red = 0, Blue = 255, Green = 255;
  analogWrite(BlueLED, Blue);
  // Red to Green
  for( ; Red < 255, Green > 0 ; Red ++, Green --) 
  {
    analogWrite(RedLED, Red);
    analogWrite(GreenLED, Green);
    delay(200);
  }
  // Green to Blue
  for( ; Green < 255, Blue > 0 ; Green ++, Blue --) 
  {
    analogWrite(GreenLED, Green);
    analogWrite(BlueLED, Blue);
    delay(200);
  }
  // Blue to Red
  for( ; Blue < 255, Red > 0 ; Blue ++, Red --) 
  {
    analogWrite(BlueLED, Blue);
    analogWrite(RedLED, Red);
    delay(200);
  }
}
For I2C driver program in ATMega328P, see this post

Comments
Post a Comment