#include <timeObj.h>
#include <mechButton.h>

#define NUM_TIMES  10

float       times[NUM_TIMES];
timeObj     timer(0,false); 
int         LEDs[] = {2,3,4,5,6,7,8,9,10,11};
int         timeIndex;
mechButton  startButton(12);

void setup() {
  
  for (int i=0;i<NUM_TIMES;i++) {
    pinMode(LEDs[i],OUTPUT);
  }
  times[0] = 100;
  times[1] = 200;
  times[2] = 300;
  times[3] = 400;
  times[4] = 500;
  times[5] = 400;
  times[6] = 300;
  times[7] = 200;
  times[8] = 100;
  times[9] = 500;
  startButton.setCallback(btnClk);
}

void LEDsOff(void) {
  
  for (int i=0;i<NUM_TIMES;i++) {
    digitalWrite(LEDs[i],LOW);
  }
}


void btnClk(void) {

  if (!startButton.getState()) {
    LEDsOff();
    timeIndex = 0;
    digitalWrite(LEDs[timeIndex],HIGH);
    timer.setTime(times[timeIndex]);
  }
}


void loop() {

  idle();
  if (timer.ding()) {
    digitalWrite(LEDs[timeIndex],LOW);
    timeIndex++;
    if (timeIndex<NUM_TIMES) {
      digitalWrite(LEDs[timeIndex],HIGH);
      timer.setTime(times[timeIndex]);
    } else {
      timer.reset();
    }
  }
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
led5:A
led5:C
led6:A
led6:C
led7:A
led7:C
led8:A
led8:C
led9:A
led9:C
led10:A
led10:C
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r