#define LED_PIN 2
#define BUTTON_PIN 13
#define MODE_ON 1
#define MODE_WEAK 2
#define MODE_OFF 3
byte ledModes[] = {MODE_ON, MODE_WEAK, MODE_OFF};
byte ledModeCount;
byte currentLedMode;
byte delayMs;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT);
ledModeCount = sizeof(ledModes);
currentLedMode = MODE_OFF;
delayMs = 0;
}
void loop() {
if (digitalRead(BUTTON_PIN) == LOW) {
delay(20);
if (digitalRead(BUTTON_PIN) == LOW) {
currentLedMode = (currentLedMode + 1) % ledModeCount;
}
while (digitalRead(BUTTON_PIN) == LOW);
delay(20);
while (digitalRead(BUTTON_PIN) == LOW);
}
applyLedMode();
}
void applyLedMode() {
switch (currentLedMode) {
case MODE_ON:
digitalWrite(LED_PIN, HIGH);
break;
case MODE_WEAK:
digitalWrite(LED_PIN, HIGH);
delayMicroseconds(500);
digitalWrite(LED_PIN, LOW);
delay(10);
break;
case MODE_OFF:
digitalWrite(LED_PIN, LOW);
break;
}
}