// This example shows mechButton, wich debounces a button then,
// if desired, can do a callback when that button's state changes.
// Completely NON BLOCKING
//
//                  Hide the mess of millis!

#include <mechButton.h>


#define NUM_KEYS  9


mechButton  btn[NUM_KEYS] {2, 3, 4, 5, 6, 7, 8, 9, 10 };
char        keyCodes[NUM_KEYS] = {'A','A','A','S','D','F','G','H','J'};


void setup() {
  
  Serial.begin(115200);
  Serial.println("hello!");
  btn[0].setCallback(btnClk0);   // Link their button to the button callback.
  btn[1].setCallback(btnClk1);
  btn[2].setCallback(btnClk2); 
  btn[3].setCallback(btnClk3);
  btn[4].setCallback(btnClk4); 
  btn[5].setCallback(btnClk5);
  btn[6].setCallback(btnClk6); 
  btn[7].setCallback(btnClk7);
  btn[8].setCallback(btnClk8);                                 
}


void btnClick(int btnID) {

  Serial.print("Key ");
  Serial.print(keyCodes[btnID]);
  if (!btn[btnID].getState()) { // If this player's button is mashed..
    Serial.println(" Has been pressed.");
  } else {
    Serial.println(" Has been released.");
  } 
}


// When a button's state changes.. Call this!
void btnClk0(void) { btnClick(0); }
void btnClk1(void) { btnClick(1); }
void btnClk2(void) { btnClick(2); }
void btnClk3(void) { btnClick(3); }
void btnClk4(void) { btnClick(4); }
void btnClk5(void) { btnClick(5); }
void btnClk6(void) { btnClick(6); }
void btnClk7(void) { btnClick(7); }
void btnClk8(void) { btnClick(8); }


void loop() {
  
  idle();                   // Runs things like the buttons.
}
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
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r
btn4:1.l
btn4:2.l
btn4:1.r
btn4:2.r
btn5:1.l
btn5:2.l
btn5:1.r
btn5:2.r
btn6:1.l
btn6:2.l
btn6:1.r
btn6:2.r
btn7:1.l
btn7:2.l
btn7:1.r
btn7:2.r
btn8:1.l
btn8:2.l
btn8:1.r
btn8:2.r
btn9:1.l
btn9:2.l
btn9:1.r
btn9:2.r