RGBLED: Difference between revisions

From Noisebridge
Jump to navigation Jump to search
m (added resistor values for 5v)
(Added starter code)
Line 15: Line 15:
Volts: 2.0 0.0 3.2 3.2
Volts: 2.0 0.0 3.2 3.2
</pre>
</pre>
== Code ==
Modified version of "Fade" sample code, to cycle thru fading one at a time, Reg, Green and Blue.
<pre>
/*
RGB Fade
This example shows how to fade an LED on pin 3, 5 & 6
using the analogWrite() function.
This is an extension of "Fade" example code in the public domain.
This version is provided as-is for whatever purposes -thex
*/
int redPin = 3;        // PWM out pin for Red
int greenPin = 6;      // PWM out pin for Green
int bluePin = 5;      // PWM out pin for Blue
float redMax = 0.5;
float greenMax = 0.8;
float blueMax = 1.0;
int activePin;        // currently active color
float activeMax;
int brightness;        // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by
void setup()  {
  brightness = int(fadeAmount);
  activePin = redPin;
 
  // declare output pins to be an output:
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}
void loop()  {
  // set the brightness of active color
  analogWrite(activePin, brightness * activeMax);   
  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;
 
  if (brightness == 255) {
    // Reverse fade
    fadeAmount = -fadeAmount ;
  }
 
  if (brightness == 0)
  {
    // Turn off current color, and switch to next
    analogWrite(activePin, 0);
    if (activePin == redPin)
    {
      activePin = greenPin;
      activeMax = greenMax;
    }
    else if (activePin == greenPin)
    {
      activePin = bluePin;
      activeMax = blueMax;
    }
    else
    {
      activePin = redPin;
      activeMax = redMax;
    }
   
    // Reset for next color
    fadeAmount = -fadeAmount;
    brightness = int(fadeAmount);
  }
 
  // wait for 30 milliseconds to see the dimming effect   
  delay(30);                           
}
</pre>
[[Category:Fort]]

Revision as of 04:35, 24 December 2013

5mm water clear LED's with 4 pins.

The 2nd pin (from the left, with the flat spot oriented to the left) is a common cathode ground.

Pin 1 is Red, Pin 3 is Blue, Pin 4 is Green, on newer versions the Blue and Green maybe switched.

Recommended current limiting of 20ma max is advized, 30ma is the noted max at 1/10th duty cycle at 10khz.

When driving at 5v, a 150 ohm resistor for Red, and a 100 ohm resistor for each Green and Blue limits current to around 20ma.

        1   2   3   4
        |   |   |   |
Color:  R   -   B   G
Volts: 2.0 0.0 3.2 3.2


Code

Modified version of "Fade" sample code, to cycle thru fading one at a time, Reg, Green and Blue.

/*
 RGB Fade
 
 This example shows how to fade an LED on pin 3, 5 & 6
 using the analogWrite() function.
 
 This is an extension of "Fade" example code in the public domain.
 
 This version is provided as-is for whatever purposes -thex
 
 */
int redPin = 3;        // PWM out pin for Red
int greenPin = 6;      // PWM out pin for Green
int bluePin = 5;       // PWM out pin for Blue

float redMax = 0.5;
float greenMax = 0.8;
float blueMax = 1.0;


int activePin;         // currently active color
float activeMax;
 
int brightness;        // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

void setup()  { 
  brightness = int(fadeAmount);
  activePin = redPin;
  
  // declare output pins to be an output:
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
} 

void loop()  { 
  // set the brightness of active color
  analogWrite(activePin, brightness * activeMax);    

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;
  
  if (brightness == 255) {
    // Reverse fade
    fadeAmount = -fadeAmount ; 
  }
  
  if (brightness == 0)
  {
    // Turn off current color, and switch to next
    analogWrite(activePin, 0);
    if (activePin == redPin)
    {
      activePin = greenPin;
      activeMax = greenMax;
    } 
    else if (activePin == greenPin)
    {
      activePin = bluePin;
      activeMax = blueMax;
    }
    else
    {
      activePin = redPin;
      activeMax = redMax;
    }
    
    // Reset for next color
    fadeAmount = -fadeAmount;
    brightness = int(fadeAmount);
  }
  
  // wait for 30 milliseconds to see the dimming effect    
  delay(30);                            
}