Hello,
The following code works but in a strange way. Button1 Pushed ---> RBG LED Lights up with set value (R=155,G=100,B=50) ----> Delay ----> RGB strip truns to white ??? -------> then fades out.
Why does the white light show up? Why doesnt theRGB colour fade out to zero and not take the route which it currently does.
Ideally i would like it to light up to a certain colour and then fade from that colour to off.
Please help :)
Its very strange.
const int ledPinR = 9;
const int ledPinG= 11;
const int ledPinB = 10;
const int buttonPin1 = 3;
const int buttonPin2 = 4;
int buttonState1 = 0;
int buttonState2 = 0;
int redPwr = 0;
int greenPwr = 0;
int bluePwr = 0;
int faderR;
int faderG;
int faderB;
void setup()
{
pinMode(ledPinR, OUTPUT);
pinMode(ledPinG, OUTPUT);
pinMode(ledPinB, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
}
void loop()
{
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2 );
if (buttonState1 == LOW){
//redPwr = 246;
//greenPwr = 235;
//bluePwr = 0;
//analogWrite(ledPinR, redPwr);
//analogWrite(ledPinG, greenPwr);
//analogWrite(ledPinB, bluePwr);
//delay(1000);
fade(redPwr,greenPwr,bluePwr,50);
}
if (buttonState2 == LOW) {
//redPwr = 246;
//greenPwr = 235;
//bluePwr = 0;
//analogWrite(ledPinR, redPwr);
//analogWrite(ledPinG, greenPwr);
//analogWrite(ledPinB, bluePwr);
//delay(1000);
fade2(redPwr,greenPwr,bluePwr,50);
}
else {
analogWrite(ledPinR, LOW);
analogWrite(ledPinG, LOW);
analogWrite(ledPinB, LOW);
}
}
void fade(int redFrom, int grnFrom, int bluFrom, int delayTime)
{
/*for (int r=redFrom, g=grnFrom, b=bluFrom; r>=0; g>=0; b>=0; r-=5, g-=5, b-=5)
{
analogWrite(ledPinR, r);
analogWrite(ledPinG, g);
analogWrite(ledPinB, b);
delay(delayTime);
} */
faderR = 246;
faderG = 235;
faderB = 0;
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(1000);
for (int fader=255; fader>=0; fader-=5)
{
faderR -= 4;
faderG -= 5;
faderB -= 2;
if (faderR > 0)
{
faderR = 0;
}
if (faderG > 0)
{
faderG = 0;
}
if (faderB > 0)
{
faderB = 0;
}
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(delayTime);
}
}
void fade2(int redFrom, int grnFrom, int bluFrom, int delayTime)
{
/*for (int r=redFrom, g=grnFrom, b=bluFrom; r>=0; g>=0; b>=0; r-=5, g-=5, b-=5)
{
analogWrite(ledPinR, r);
analogWrite(ledPinG, g);
analogWrite(ledPinB, b);
delay(delayTime);
} */
faderR = 100;
faderG = 0;
faderB = 100;
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(1000);
for (int fader=255; fader>=0; fader-=5)
{
faderR -= 4;
faderG -= 5;
faderB -= 2;
if (faderR > 0)
{
faderR = 0;
}
if (faderG > 0)
{
faderG = 0;
}
if (faderB > 0)
{
faderB = 0;
}
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(delayTime);
}
}
void fade3(int redFrom, int grnFrom, int bluFrom, int delayTime)
{
/*for (int r=redFrom, g=grnFrom, b=bluFrom; r>=0; g>=0; b>=0; r-=5, g-=5, b-=5)
{
analogWrite(ledPinR, r);
analogWrite(ledPinG, g);
analogWrite(ledPinB, b);
delay(delayTime);
} */
faderR = 0;
faderG = 150;
faderB = 200;
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(3000);
for (int fader=255; fader>=0; fader-=5)
{
faderR -= 4;
faderG -= 5;
faderB -= 2;
if (faderR > 0)
{
faderR = 0;
}
if (faderG > 0)
{
faderG = 0;
}
if (faderB > 0)
{
faderB = 0;
}
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(delayTime);
}
}
Also someone emailed me this code but it doesnt seem to work!
const int ledPinR = 9;
const int ledPinG= 11;
const int ledPinB = 10;
const int buttonPin1 = 3;
const int buttonPin2 = 4;
int buttonState1 = 0;
int buttonState2 = 0;
int redPwr = 0;
int greenPwr = 0;
int bluePwr = 0;
int faderR;
int faderG;
int faderB;
void setup()
{
pinMode(ledPinR, OUTPUT);
pinMode(ledPinG, OUTPUT);
pinMode(ledPinB, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
}
void loop()
{
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2 );
if (buttonState1 == LOW){
//redPwr = 246;
//greenPwr = 235;
//bluePwr = 0;
//analogWrite(ledPinR, redPwr);
//analogWrite(ledPinG, greenPwr);
//analogWrite(ledPinB, bluePwr);
//delay(1000);
fade(redPwr,greenPwr,bluePwr,50);
}
if (buttonState2 == LOW) {
//redPwr = 246;
//greenPwr = 235;
//bluePwr = 0;
//analogWrite(ledPinR, redPwr);
//analogWrite(ledPinG, greenPwr);
//analogWrite(ledPinB, bluePwr);
//delay(1000);
fade2(redPwr,greenPwr,bluePwr,50);
}
else {
analogWrite(ledPinR, LOW);
analogWrite(ledPinG, LOW);
analogWrite(ledPinB, LOW);
}
}
void fade(int redFrom, int grnFrom, int bluFrom, int delayTime)
{
/*for (int r=redFrom, g=grnFrom, b=bluFrom; r>=0; g>=0; b>=0; r-=5, g-=5, b-=5)
{
analogWrite(ledPinR, r);
analogWrite(ledPinG, g);
analogWrite(ledPinB, b);
delay(delayTime);
} */
faderR = 246;
faderG = 235;
faderB = 0;
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(1000);
for (int fader=255; fader>=0; fader-=5)
{
faderR -= 4;
faderG -= 5;
faderB -= 2;
if (faderR > 0)
{
faderR = 0;
}
if (faderG > 0)
{
faderG = 0;
}
if (faderB > 0)
{
faderB = 0;
}
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(delayTime);
}
}
void fade2(int redFrom, int grnFrom, int bluFrom, int delayTime)
{
/*for (int r=redFrom, g=grnFrom, b=bluFrom; r>=0; g>=0; b>=0; r-=5, g-=5, b-=5)
{
analogWrite(ledPinR, r);
analogWrite(ledPinG, g);
analogWrite(ledPinB, b);
delay(delayTime);
} */
faderR = 100;
faderG = 0;
faderB = 100;
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(1000);
for (int fader=255; fader>=0; fader-=5)
{
faderR -= 4;
faderG -= 5;
faderB -= 2;
if (faderR > 0)
{
faderR = 0;
}
if (faderG > 0)
{
faderG = 0;
}
if (faderB > 0)
{
faderB = 0;
}
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(delayTime);
}
}
void fade3(int redFrom, int grnFrom, int bluFrom, int delayTime)
{
/*for (int r=redFrom, g=grnFrom, b=bluFrom; r>=0; g>=0; b>=0; r-=5, g-=5, b-=5)
{
analogWrite(ledPinR, r);
analogWrite(ledPinG, g);
analogWrite(ledPinB, b);
delay(delayTime);
} */
faderR = 0;
faderG = 150;
faderB = 200;
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(3000);
for (int fader=255; fader>=0; fader-=5)
{
faderR -= 4;
faderG -= 5;
faderB -= 2;
if (faderR > 0)
{
faderR = 0;
}
if (faderG > 0)
{
faderG = 0;
}
if (faderB > 0)
{
faderB = 0;
}
analogWrite(ledPinR, faderR);
analogWrite(ledPinG, faderG);
analogWrite(ledPinB, faderB);
delay(delayTime);
}
}