first commit
This commit is contained in:
213
LED_RGB/LED_RGB.ino
Executable file
213
LED_RGB/LED_RGB.ino
Executable file
@@ -0,0 +1,213 @@
|
||||
/*
|
||||
Fade RGB LED Smoothly through 4 colours
|
||||
Fades an RGB LED using PWM smoothly through 4 different colours pausing for 1.5 seconds on each colour.
|
||||
|
||||
Connect an common Cathode RGB LED with appropriate resistors on each anode to your Arduino Uno;
|
||||
Red to pin 11, Green to pin 10, Blue to pin 9, Cathode to GND.
|
||||
|
||||
Developed for Arduino Uno by Joshua David - TechHelpBlog.com
|
||||
|
||||
Please Feel Free to adapt and use this code in your projects.
|
||||
|
||||
Contact me at techhelpblog.com and let me know how you've used it!
|
||||
*/
|
||||
|
||||
// Assign LED Output PWM Pins
|
||||
int Red = 11;
|
||||
int Green = 10;
|
||||
int Blue = 6;
|
||||
|
||||
//Set Initial Values
|
||||
int RedVal = 0;
|
||||
int GreenVal = 0;
|
||||
int BlueVal = 0;
|
||||
int fade = 10; // Delay Time
|
||||
|
||||
// Colour Value 1 as each colour intensity (0-255)
|
||||
int RedVal1 = 186;
|
||||
int GreenVal1 = 0;
|
||||
int BlueVal1 = 255;
|
||||
|
||||
// Colour Value 2
|
||||
int RedVal2 = 9;
|
||||
int GreenVal2 = 239;
|
||||
int BlueVal2 = 26;
|
||||
|
||||
//Colour Value 3
|
||||
int RedVal3 = 255;
|
||||
int GreenVal3 = 120;
|
||||
int BlueVal3 = 0;
|
||||
|
||||
//Colour Value 4
|
||||
int RedVal4 = 0;
|
||||
int GreenVal4 = 255;
|
||||
int BlueVal4 = 78;
|
||||
|
||||
//Set initial mode (Colour Value Mode) to Colour Value 1
|
||||
int mode = 1;
|
||||
|
||||
void setup()
|
||||
{
|
||||
|
||||
//----------------------- Assign outputs
|
||||
pinMode(Red, OUTPUT);
|
||||
pinMode(Green, OUTPUT);
|
||||
pinMode(Blue, OUTPUT);
|
||||
//----------------------- Write Initial Values of 0 to outputs
|
||||
analogWrite(Red, RedVal);
|
||||
analogWrite(Green, GreenVal);
|
||||
analogWrite(Blue, BlueVal);
|
||||
|
||||
}
|
||||
|
||||
void loop() // Begin Main Program Loop
|
||||
|
||||
{
|
||||
while(mode == 1){
|
||||
if(RedVal < RedVal1){ // If RedVal is less than desired RedVal1
|
||||
RedVal ++; // increment RedVal
|
||||
} else if(RedVal > RedVal1){ // If RedVal is more than desired RedVal1
|
||||
RedVal --; // decrement RedVal
|
||||
} else if(RedVal == RedVal1){ // If RedVal is equal to desired RedVal1
|
||||
//Do Nothing
|
||||
}
|
||||
// Repeated as above for BlueVal
|
||||
if(BlueVal < BlueVal1){
|
||||
BlueVal ++;
|
||||
} else if(BlueVal > BlueVal1){
|
||||
BlueVal --;
|
||||
} else if(BlueVal == BlueVal1){
|
||||
//Do Nothing
|
||||
}
|
||||
// Repeated as above for GreenVal
|
||||
if(GreenVal < GreenVal1){
|
||||
GreenVal ++;
|
||||
} else if (GreenVal > GreenVal1){
|
||||
GreenVal --;
|
||||
} else if (GreenVal == GreenVal1){
|
||||
// Do Nothing
|
||||
}
|
||||
// Now we have a new set of values, we write them to the PWM Pins.
|
||||
analogWrite(Red, RedVal);
|
||||
analogWrite(Green, GreenVal);
|
||||
analogWrite(Blue, BlueVal);
|
||||
delay(fade); // Implement a bit of delay to slow the change of colour down a bit
|
||||
|
||||
if(RedVal == RedVal1 && GreenVal == GreenVal1 && BlueVal == BlueVal1){ // If RedVal & GreenVal & BlueVal are all at the desired values
|
||||
delay(1500); // Delay to hold this colour for a little while
|
||||
mode = 2; // Change the mode to the next colour. Exiting this while loop and into the next one
|
||||
}
|
||||
}
|
||||
|
||||
while(mode == 2){
|
||||
if(RedVal < RedVal2){
|
||||
RedVal ++;
|
||||
} else if(RedVal > RedVal2){
|
||||
RedVal --;
|
||||
} else if(RedVal == RedVal2){
|
||||
//Do Nothing
|
||||
}
|
||||
|
||||
if(BlueVal < BlueVal2){
|
||||
BlueVal ++;
|
||||
} else if(BlueVal > BlueVal2){
|
||||
BlueVal --;
|
||||
} else if(BlueVal == BlueVal2){
|
||||
//Do Nothing
|
||||
}
|
||||
|
||||
if(GreenVal < GreenVal2){
|
||||
GreenVal ++;
|
||||
} else if (GreenVal > GreenVal2){
|
||||
GreenVal --;
|
||||
} else if (GreenVal == GreenVal2){
|
||||
// Do Nothing
|
||||
}
|
||||
|
||||
analogWrite(Red, RedVal);
|
||||
analogWrite(Green, GreenVal);
|
||||
analogWrite(Blue, BlueVal);
|
||||
delay(fade);
|
||||
|
||||
if(RedVal == RedVal2 && GreenVal == GreenVal2 && BlueVal == BlueVal2){
|
||||
delay(1500);
|
||||
mode = 3;
|
||||
//break;
|
||||
}
|
||||
}
|
||||
|
||||
while(mode == 3){
|
||||
if(RedVal < RedVal3){
|
||||
RedVal ++;
|
||||
} else if(RedVal > RedVal3){
|
||||
RedVal --;
|
||||
} else if(RedVal == RedVal3){
|
||||
//Do Nothing
|
||||
}
|
||||
|
||||
if(BlueVal < BlueVal3){
|
||||
BlueVal ++;
|
||||
} else if(BlueVal > BlueVal3){
|
||||
BlueVal --;
|
||||
} else if(BlueVal == BlueVal3){
|
||||
//Do Nothing
|
||||
}
|
||||
|
||||
if(GreenVal < GreenVal3){
|
||||
GreenVal ++;
|
||||
} else if (GreenVal > GreenVal3){
|
||||
GreenVal --;
|
||||
} else if (GreenVal == GreenVal3){
|
||||
// Do Nothing
|
||||
}
|
||||
|
||||
analogWrite(Red, RedVal);
|
||||
analogWrite(Green, GreenVal);
|
||||
analogWrite(Blue, BlueVal);
|
||||
delay(fade);
|
||||
|
||||
if(RedVal == RedVal3 && GreenVal == GreenVal3 && BlueVal == BlueVal3){
|
||||
delay(1500);
|
||||
mode = 4;
|
||||
//break;
|
||||
}
|
||||
}
|
||||
|
||||
while(mode == 4){
|
||||
if(RedVal < RedVal4){
|
||||
RedVal ++;
|
||||
} else if(RedVal > RedVal4){
|
||||
RedVal --;
|
||||
} else if(RedVal == RedVal4){
|
||||
//Do Nothing
|
||||
}
|
||||
|
||||
if(BlueVal < BlueVal4){
|
||||
BlueVal ++;
|
||||
} else if(BlueVal > BlueVal4){
|
||||
BlueVal --;
|
||||
} else if(BlueVal == BlueVal4){
|
||||
//Do Nothing
|
||||
}
|
||||
|
||||
if(GreenVal < GreenVal4){
|
||||
GreenVal ++;
|
||||
} else if (GreenVal > GreenVal4){
|
||||
GreenVal --;
|
||||
} else if (GreenVal == GreenVal4){
|
||||
// Do Nothing
|
||||
}
|
||||
|
||||
analogWrite(Red, RedVal);
|
||||
analogWrite(Green, GreenVal);
|
||||
analogWrite(Blue, BlueVal);
|
||||
delay(fade);
|
||||
|
||||
if(RedVal == RedVal4 && GreenVal == GreenVal4 && BlueVal == BlueVal4){
|
||||
delay(1500);
|
||||
mode = 1; // Set mode back to 1 to return to the original colour.
|
||||
//break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user