int col[] = {2,3};
int row[] = {4,5};
const int NUM_COLS = sizeof(col) / sizeof(col[0]); //stevilo col pinov
const int NUM_ROWS = sizeof(row) / sizeof(row[0]); //stevilo row pinov
bool LBS[NUM_COLS][NUM_ROWS]; //array za last button state
void setup() {
Serial.begin(9600);
for (int i = 0; i < NUM_COLS; i++){
pinMode(col[i], OUTPUT); //vse col da na out
digitalWrite(col[i], HIGH); //vse col da na high(inactive)
}
for (int j = 0; j < NUM_ROWS; j++){
pinMode(row[j], INPUT_PULLUP); //vse row da na inpul
}
for (int i = 0; i < NUM_COLS; i++) { //cel LBS array zapise kot 0
for (int j = 0; j < NUM_ROWS; j++) {
LBS[i][j] = false;
}
}
}
void loop() {
for (int a = 0; a < NUM_COLS; a++){ //ciklira med col
digitalWrite(col[a], LOW); //ta col da na low (za branje)
// pr vsakmu col nardi:
for (int b = 0; b < NUM_ROWS; b++){ //ciklira med row
//na vsaki tocki v array se nardi:
bool CBS = (digitalRead(row[b]) == LOW); //current button state
if (CBS != LBS[a][b]) { //ce se trenutni pritisnjen gump razlikuje od prej
if (CBS) {
// gump je bil pritisnjen
Serial.print("btn");
Serial.print((a * NUM_ROWS) + b + 1); //enacba za array gumb
Serial.println(",on");
} else {
// gumb je bil spuscen
Serial.print("btn");
Serial.print((a * NUM_ROWS) + b + 1);
Serial.println(",off");
}
LBS[a][b] = CBS;
}
}
digitalWrite(col[a], HIGH); //ta col da nazaj na high po branju
}
delay(5); //debounce
}