# 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);
}
*/