const int BTN_PIN = 4;
const int RED_LED_PIN = 2;
const int YEL_LED_PIN = 3;
int counter = 0;
int oldCount = -1;
int oldBtnVal = 1; // INPUT_PULLUP, pin idles HIGH
int checkButton() {
int buttonValue = digitalRead(BTN_PIN);
if (buttonValue != oldBtnVal) { // button changed
oldBtnVal = buttonValue; // remember state
if (buttonValue == LOW) { // was just pressed
//Serial.println("Button pressed");
counter++;
if (counter > 3) counter = 0;
} else {
//Serial.println("Button released"); // was just released
}
delay(20); // short delay to debounce button
}
return counter;
}
void setup() {
Serial.begin(9600);
pinMode(BTN_PIN, INPUT_PULLUP);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(YEL_LED_PIN, OUTPUT);
}
void loop() {
int count = checkButton();
if (count != oldCount) {
oldCount = count;
if (count == 0) {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YEL_LED_PIN, LOW);
}
if (count == 1) {
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(YEL_LED_PIN, LOW);
}
if (count == 2) {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YEL_LED_PIN, HIGH);
}
if (count == 3) {
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(YEL_LED_PIN, HIGH);
}
Serial.print("Count = ");
Serial.print(count);
Serial.print("\tYellow LED: ");
Serial.print(digitalRead(YEL_LED_PIN) ? "on " : "off");
Serial.print("\t\tRed LED: ");
Serial.println(digitalRead(RED_LED_PIN) ? "on " : "off");
}
}