// Button 1 scrolls through all patterns.
// Button 2 directly starts pattern X.
// Button 3 directly starts pattern XY.
// I'm undecided on implementing a button 4 for reverse scrolling.
// Only one pattern will run at a time of course.

#include <mechButton.h>

#define     MAX_INDEX   3   // The amount of patterns.

mechButton  scrollBtn(2);
mechButton  startBtn(3);
mechButton  altStartBtn(4);
enum        states { waiting, running, altRunning };
states      ourState;
int         index;


void setup(void) {

  Serial.begin(115200);
  scrollBtn.setCallback(scrollClk);
  startBtn.setCallback(startClk);
  altStartBtn.setCallback(altStartClk);
  index = 1;
  ourState = waiting;
  Serial.print("index : ");
  Serial.println(index);
}


void scrollClk(void) {

  if (!scrollBtn.getState()) {
    index++;
    if (index>MAX_INDEX) {
      index = 1;
    }
    Serial.print("Scroll click with index : ");
    Serial.println(index);
  }
}


void startClk(void) {

  if (!startBtn.getState()) {
    Serial.println("startBtn click");
  }
}


void altStartClk(void) {

  if (!altStartBtn.getState()) {
    Serial.println("altStartBtn click");
  }
}


void loop(void) {

  idle();
  switch(ourState) {
    case waiting  : break;
    case running  : 
    
    break;
    case altRunning  : 
    
    break;
  }
}
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
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r