#define RED_PIN 9
#define GREEN_PIN 10
#define BLUE_PIN 11
#define BUTTON 2
int colorState = 0;
bool lastButton = HIGH;
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
// RGB OFF initially
allOff();
}
void loop() {
bool currentButton = digitalRead(BUTTON);
// Button press detected
if (lastButton == HIGH && currentButton == LOW) {
colorState++;
if (colorState > 4) colorState = 0;
delay(200); // debounce
}
lastButton = currentButton;
switch (colorState) {
case 0: // OFF
allOff();
break;
case 1: // RED
redOn();
break;
case 2: // GREEN
greenOn();
break;
case 3: // BLUE
blueOn();
break;
case 4: // WHITE
whiteOn();
break;
}
}
// ---------- FUNCTIONS ----------
void allOff() {
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
}
void redOn() {
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
}
void greenOn() {
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
}
void blueOn() {
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
}
void whiteOn() {
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
}