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


nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
led1:A
led1:C
r1:1
r1:2
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
led3:A
led3:C
r3:1
r3:2
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
led4:A
led4:C
r4:1
r4:2