const int LED_RED = 5;
const int LED_GREEN = 4;
const int LED_BLUE = 3;
const int BUTTON = 2;
int curButton = LOW;
int lastButton = LOW;
int countPress = 0;
int debounce(const int last)
{
int current = digitalRead(BUTTON);
if (current != last)
{
delay(5);
current = digitalRead(BUTTON);
}
return current;
}
void switchLedState(const int countPress)
{
switch (countPress) {
case 1:
{
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BLUE, LOW);
break;
}
case 2:
{
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_BLUE, LOW);
break;
}
case 3:
{
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_BLUE, HIGH);
break;
}
case 4:
{
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BLUE, HIGH);
break;
}
case 5:
{
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_BLUE, LOW);
break;
}
case 6:
{
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_BLUE, HIGH);
break;
}
case 7:
{
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BLUE, HIGH);
break;
}
default:
{
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BLUE, LOW);
break;
}
}
}
void setup() {
// put your setup code here, to run once:
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
digitalWrite(LED_RED, LOW);
pinMode(BUTTON, INPUT);
digitalWrite(BUTTON, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
curButton = debounce(lastButton);
if (curButton == HIGH && lastButton == LOW)
{
++countPress;
switchLedState(countPress);
if (countPress == 8)
{
countPress = 0;
}
}
lastButton = curButton;
}