Infinite* colours
5. analogWrite()
This is the code we are going to use:
const int redPin = 11;
const int greenPin = 10;
const int bluePin = 9;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop()
{
setColor(255, 0, 0); // red
delay(1000); // pause for a second
setColor(0, 255, 0); // green
delay(1000);
setColor(0, 0, 255); // blue
delay(1000);
setColor(255, 255, 0); // yellow
delay(1000);
setColor(80, 0, 80); // purple
delay(1000);
setColor(0, 255, 255); // aqua
delay(1000);
}
void setColor(int red, int green, int blue)
{
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
As you may notice, this sketch has one more function written called setColor.
void setColor(int red, int green, int blue)
{
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
This function takes three arguments, one for the brightness of the red,
green and blue LEDs. In each case the number will be in the range 0 to
255, where 0 means off and 255 means maximum brightness. The function
then calls analogWrite to set the brightness of each LED. Since we are using a common anode RGB LED, we also need to change the
analog write values so that the colour is subtracted from 255.