# include <ezButton.h>
const unsigned long holdTime = 1777; // milliseconds to assumption of complete move
ezButton redButton(4);
ezButton greenButton(A4);
const byte redLED = 2;
const byte greenLED = A2;
const byte yellowLED = 7;
# define ON HIGH
# define OFF LOW
const bool PRESSED = false; // ezButton pulled high
void setup() {
Serial.begin(115200);
Serial.println("\nopen loop tarp \"monitor\"");
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
redButton.setDebounceTime(50);
greenButton.setDebounceTime(50);
}
unsigned long eggTimeStart;
void loop() {
unsigned long now = millis();
redButton.loop();
if (redButton.isPressed()) {
Serial.print("\npressing the red button...");
digitalWrite(redLED, OFF);
digitalWrite(yellowLED, ON);
eggTimeStart = now;
}
unsigned long elapsedTime = now - eggTimeStart;
if (redButton.getState() == PRESSED && elapsedTime > holdTime) {
if (digitalRead(redLED) == OFF)
Serial.print(" long enough, so\n");
digitalWrite(redLED, ON);
digitalWrite(yellowLED, OFF);
}
if (redButton.isReleased())
digitalWrite(yellowLED, OFF);
}
/*
void loop() {
unsigned long now = millis();
// check the red button has been pressed for long enough
redButton.loop();
if (redButton.isPressed()) {
Serial.println("you pressed the red button");
digitalWrite(redLED, OFF);
digitalWrite(greenLED, OFF);
digitalWrite(yellowLED, ON);
eggTimeStart = now;
}
unsigned long elapsedTime = now - eggTimeStart;
if (redButton.getState() == PRESSED && elapsedTime > holdTime) {
if (digitalRead(redLED) == OFF) {
Serial.println(" red long enough, so");
digitalWrite(redLED, ON);
}
digitalWrite(yellowLED, OFF);
}
// second verse, same as the first:
greenButton.loop();
if (greenButton.isPressed()) {
digitalWrite(redLED, OFF);
digitalWrite(greenLED, OFF);
digitalWrite(yellowLED, ON);
eggTimeStart = now;
}
if (greenButton.getState() == PRESSED && now - eggTimeStart > holdTime) {
digitalWrite(greenLED, ON);
digitalWrite(yellowLED, OFF);
}
if (redButton.getState() != PRESSED && greenButton.getState() != PRESSED)
digitalWrite(yellowLED, OFF);
}
*/