#define COL_COUNT 3
#define ROW_COUNT 4
const int colPins[] = {21, 22, 23};
const int rowPins[] = {12, 13, 14, 15};
const char symbols[4][3] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
void setup() {
Serial.begin(115200);
for (int i = 0; i < COL_COUNT; i++) {
pinMode(colPins[i], INPUT_PULLUP);
}
for (int i = 0; i < ROW_COUNT; i++) {
pinMode(rowPins[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < COL_COUNT; i++) {
if(!digitalRead(colPins[i])) {
for (int j = 0; j < ROW_COUNT; j++) {
digitalWrite(rowPins[j], HIGH);
if (digitalRead(colPins[i])) Serial.printf("%c\n", symbols[j][i]);
digitalWrite(rowPins[j], LOW);
}
}
}
}