constexpr int8_t pushButtonPin = 2;
constexpr int8_t ledPin = 3;
enum ledStates : int8_t {
ZERO_PERCENT = 0,
TWENTY_PERCENT = 1,
FORTY_PERCENT = 2,
SIXTY_PERCENT = 3,
EIGHTY_PERCENT = 4,
HUNDRED_PERCENT = 5
};
ledStates ledStatus = ZERO_PERCENT;
enum pushButtonStates : int8_t {
PRESSED = 0,
RELEASED = 1
};
pushButtonStates pushButtonStatus = RELEASED;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(pushButtonPin, INPUT_PULLUP);
}
void loop() {
// Typecast the value to the specific state
pushButtonStatus = (pushButtonStates)digitalRead(pushButtonPin);
switch(pushButtonStatus) {
case PRESSED:
ledStatus = (ledStatus + 1) % 6;
break;
case RELEASED:
break;
}
switch(ledStatus) {
case ZERO_PERCENT:
analogWrite(ledPin, 0); // 0% = 0*255/100
Serial.println("0%");
break;
case TWENTY_PERCENT:
analogWrite(ledPin, 51); // 20% = 20*255/100
Serial.println("20%");
break;
case FORTY_PERCENT:
analogWrite(ledPin, 102); // 40% = 40*255/100
Serial.println("40%");
break;
case SIXTY_PERCENT:
analogWrite(ledPin, 153); // 60% = 60*255/100
Serial.println("60%");
break;
case EIGHTY_PERCENT:
analogWrite(ledPin, 204); // 80% = 80*255/100
Serial.println("80%");
break;
case HUNDRED_PERCENT:
analogWrite(ledPin, 255); // 100% = 100*255/100
Serial.println("100%");
break;
default:
Serial.println("CODE SHOULD NEVER ENTER HERE");
}
delay(100); // delay to debounce the button
}