// RGB Light
int switchPin = 2;
int redPin = 5;
int greenPin = 6;
int bluePin = 3;
int val;
int val2;
int buttonState;
int lightMode = 0;
void setup()
{
pinMode(switchPin, INPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(9600);
buttonState = digitalRead(switchPin);
}
void loop(){
val = digitalRead(switchPin);
delay(10);
val2 = digitalRead(switchPin);
if (val == val2) {
if (val != buttonState) {
if (val == LOW) {
if (lightMode == 0) {
lightMode = 1;
} else {
if (lightMode == 1) {
lightMode = 2;
} else {
if (lightMode == 2) {
lightMode = 3;
} else {
if (lightMode == 3) {
lightMode = 4;
} else {
lightMode = 0;
}
}
}
}
}
}
buttonState = val;
}
//
if (lightMode == 0) {
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
}
if (lightMode == 1) {
analogWrite(redPin, 255);
analogWrite(bluePin, 255);
analogWrite(greenPin, 0);
}
if (lightMode == 2) {
analogWrite(redPin, 255);
analogWrite(bluePin, 0);
analogWrite(greenPin, 255);
}
if (lightMode == 3) {
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 255);
if (lightMode == 4) {
analogWrite(redPin, 255);
delay(500);
analogWrite(greenPin, 255);
delay(500);
analogWrite(redPin, 100);
analogWrite(greenPin, 180);
delay(500);
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 255);
delay(500);
analogWrite(redPin, 0);
analogWrite(bluePin, 100);
analogWrite(greenPin, 100);
delay(500);
analogWrite(redPin, 255);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
delay(500);
analogWrite(redPin, 0);
analogWrite(greenPin, 170);
analogWrite(bluePin, 80);
}
}
}
Works fine till I press the button the 4th time to the delayed analogWrite.
I adapted from lady ada's code.