1

I recently bought a 5050 RGB 12V 3A LED strip and I set it all up with my Arduino and run this code (from adafruit website), everything is good: Example Code Once you have the strip wired up, it is easy to control the color of the strip by using PWM output, for Arduino you can use

#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
#define FADESPEED 5 // make this higher to slow down
void setup() {
 pinMode(REDPIN, OUTPUT);
 pinMode(GREENPIN, OUTPUT);
 pinMode(BLUEPIN, OUTPUT);
}
void loop() {
 int r, g, b;
 // fade from blue to violet
 for (r = 0; r < 256; r++) { 
 analogWrite(REDPIN, r);
 delay(FADESPEED);
 } 
 // fade from violet to red
 for (b = 255; b > 0; b--) { 
 analogWrite(BLUEPIN, b);
 delay(FADESPEED);
 } 
 // fade from red to yellow
 for (g = 0; g < 256; g++) { 
 analogWrite(GREENPIN, g);
 delay(FADESPEED);
 } 
 // fade from yellow to green
 for (r = 255; r > 0; r--) { 
 analogWrite(REDPIN, r);
 delay(FADESPEED);
 } 
 // fade from green to teal
 for (b = 0; b < 256; b++) { 
 analogWrite(BLUEPIN, b);
 delay(FADESPEED);
 } 
 // fade from teal to blue
 for (g = 255; g > 0; g--) { 
 analogWrite(GREENPIN, g);
 delay(FADESPEED);
 } 
}

I tried to find a way to achieve the same effect but only with two colors...red to yellow..red fade to yellow and fade to red and so on..

EDIT: Thanks to @majenko I achieved this...Fade from Red to Yellow and back on:

 for (int r = 0; r < 256; r++) { 
 analogWrite(REDPIN, r);
 analogWrite(GREENPINPIN, 255 - r);
 analogWrite(BLUEPIN, 0);
 delay(FADESPEED);
 } 
 // Fade red down and blue up
 for (g = 0; g < 256; g++) { 
 analogWrite(REDPIN, 255);
 analogWrite(BLUEPIN, 0);
 analogWrite(GREENPINPIN, G);
 delay(FADESPEED);
 } 
asked Oct 1, 2016 at 17:53
2
  • What kind of arrangement are you after? Assuming red and blue are your two colours, do you want "NONE -> R -> R+B -> B -> NONE..." or "R -> B -> R -> B...", or what? Commented Oct 1, 2016 at 18:32
  • @Majenko R ....fade to B....fade to R...fade to R and so on... Commented Oct 1, 2016 at 18:38

1 Answer 1

1

The main difference between what you want and what that code does is that you want to fade both colours at once, but that code is aimed at only fading one colour at a time.

You want to fade R up whilst fading B down, and then fade R down whilst fading B up. The simplest way is with just two loops:

// Fade red up and blue down
for (int i = 0; i < 256; i++) { 
 analogWrite(REDPIN, i);
 analogWrite(BLUEPIN, 255 - i);
 delay(FADESPEED);
} 
// Fade red down and blue up
for (int i = 0; i < 256; i++) { 
 analogWrite(REDPIN, 255 - i);
 analogWrite(BLUEPIN, i);
 delay(FADESPEED);
} 

One fade value (i) per loop, and a little bit of maths to turn 0-255 into 255-0 for the value you are fading down.


For Red->Yellow->Red you just need to keep red on and fade green on and off. You already have code to fade green on and off in your original program:

 // fade from red to yellow
 for (g = 0; g < 256; g++) { 
 analogWrite(GREENPIN, g);
 delay(FADESPEED);
 } 
 // fade from teal to blue
 for (g = 255; g > 0; g--) { 
 analogWrite(GREENPIN, g);
 delay(FADESPEED);
 } 

Couple that with setting the red and blue to on and off respectively, and you have:

#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
#define FADESPEED 5 // make this higher to slow down
void setup() {
 pinMode(REDPIN, OUTPUT);
 pinMode(GREENPIN, OUTPUT);
 pinMode(BLUEPIN, OUTPUT);
 analogWrite(REDPIN, 255);
 analogWrite(BLUEPIN, 0);
}
void loop() {
 int g;
 // fade from red to yellow
 for (g = 0; g < 256; g++) { 
 analogWrite(GREENPIN, g);
 delay(FADESPEED);
 } 
 // fade from yellow to red
 for (g = 255; g > 0; g--) { 
 analogWrite(GREENPIN, g);
 delay(FADESPEED);
 } 
}
answered Oct 1, 2016 at 18:42
1
  • Comments are not for extended discussion; this conversation has been moved to chat. Commented Oct 2, 2016 at 20:46

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.