const int buttonPin = 2;
const int ledPin = 11; // Use PWM-capable pin
int buttonState;
int lastButtonState = LOW;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
int state = 0;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading == HIGH && lastButtonState == LOW) {
state = (state + 1) % 3;
}
}
lastButtonState = reading;
switch (state) {
case 0:
analogWrite(ledPin, 0); // LED off
break;
case 1:
for (int i = 0; i <= 255; i++) {
analogWrite(ledPin, i);
delay(4); // Roughly 1 second up
}
for (int i = 255; i >= 0; i--) {
analogWrite(ledPin, i);
delay(4); // Roughly 1 second down
}
break;
case 2:
analogWrite(ledPin, 255); // LED on full
break;
}
}