int L[] = {11, 10, 9, 8}; // Pinos das linhas
int C[] = {7, 6, 5, 4}; // Pinos das colunas
char teclas[4][4] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
void setup() {
Serial.begin(9600); // Inicializa a comunicação serial
for(int i = 0; i < 4; i++) {
pinMode(L[i], OUTPUT);
digitalWrite(L[i], HIGH); // Inicializa as linhas em HIGH
pinMode(C[i], INPUT_PULLUP); // Inicializa as colunas como INPUT com pull-up
}
Serial.println("Teclado 4x4");
Serial.println("Aguardando acionamento das teclas...");
Serial.println();
}
void loop() {
for(int i = 0; i < 4; i++) {
digitalWrite(L[i], LOW); // Ativa a linha i
for(int j = 0; j < 4; j++) {
if(digitalRead(C[j]) == LOW) { // Verifica se a coluna j está em LOW (tecla pressionada)
delay(50); // Debounce
if(digitalRead(C[j]) == LOW) { // Confirma se a tecla ainda está pressionada
Serial.print("Tecla pressionada: ");
Serial.println(teclas[i][j]); // Imprime a tecla pressionada
while(digitalRead(C[j]) == LOW); // Aguarda a tecla ser solta
}
}
}
digitalWrite(L[i], HIGH); // Desativa a linha i
}
}