Este Teclado Matricial 4×3 (12 Teclas) é um componente do tipo membrana/push-button, que pode fazer interface com o Arduino e é muito utilizado para entrada de dados. Ele possui 12 teclas dispostas em 4 linhas x 3 colunas, e um conector de 7 pinos para ligação:
PINAGEM TECLADO MATRICIAL 4X3 TIPO MEMBRANA:
Internamente são 12 teclas push-buttons, do tipo membrana, dispostos na configuração abaixo e em um formato keypad. Conforme a tecla é pressionada, é feita a conexão entre a linha e a coluna correspondentes. Veja a imagem a seguir:
CONECTANDO TECLADO MATRICIAL MEMBRANA 12 TECLAS AO ARDUINO:
Aqui, neste tutorial, vamos utilizar 7 portas do Arduino para conexão ao teclado matricial do tipo membrana, sendo 4 para as linhas, e 3 para as colunas. Os pinos das linhas deverão ser configurados como OUTPUT (Saída), e os pinos das colunas como INPUT (Entrada). Nos pinos referentes às colunas, vamos utilizar 3 resistores pull-down, mantendo estas saídas em nível baixo quando não houver acionamento das teclas!
PROGRAMANDO O ARDUINO PARA MAPEAMENTO DAS TECLAS:
No programa, primeiro definimos todos os pinos das linhas como saída (pinos 3, 4, 5 e 6), e os pinos de colunas como entrada (pinos 8,9 e 10). Um loop se encarrega de colocar cada pino de saída (linhas) em estado alto (HIGH), e verificar se alguma tecla foi pressionada, por meio de um comando IF para cada coluna. Caso isso aconteça, é gerada uma saída no serial monitor com a informação correspondente à qual tecla foi pressionada no teclado matricial:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
//Programa : Teste teclado matricial 4x4 //Autor : FILIPEFLOP // //Modificado por : RODRIGO COSTA //EM: 13/02/2017 //Programa : CONFIGURAÇÃO E TESTE TECLADO MATRICIAL 4x3 void setup() { //Pinos ligados aos pinos 1, 2, 3 e 4 do teclado - Linhas pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); //Pinos ligados aos pinos 5, 6, 7 e 8 do teclado - Colunas pinMode(8, INPUT); pinMode(9, INPUT); pinMode(10, INPUT); pinMode(11, INPUT); Serial.begin(9600); Serial.println("Aguardando acionamento das teclas..."); Serial.println(); } void loop() { for (int ti = 3; ti<7; ti++) { //Alterna o estado dos pinos das linhas digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(ti, HIGH); //Verifica se alguma tecla da coluna 1 foi pressionada e IDENTIFICA QUAL TECLA FOI PRESSIONADA if (digitalRead(8) == HIGH) { //imprime_linha_coluna(ti-2, 1); if (ti-2 == 1){ imprime_linha_coluna(ti-2, 1); Serial.println(); } if (ti-2 == 2){ imprime_linha_coluna(ti-2, 1); Serial.println("4"); Serial.println(); } if (ti-2 == 3){ imprime_linha_coluna(ti-2, 1); Serial.println(); } if (ti-2 == 4){ imprime_linha_coluna(ti-2, 1); Serial.println(); } while(digitalRead(8) == HIGH){}; } //Verifica se alguma tecla da coluna 2 foi pressionada e IDENTIFICA QUAL TECLA FOI PRESSIONADA if (digitalRead(9) == HIGH) { //imprime_linha_coluna(ti-2, 2); if (ti-2 == 1){ imprime_linha_coluna(ti-2, 2); Serial.println(); } if (ti-2 == 2){ imprime_linha_coluna(ti-2, 2); Serial.println(); } if (ti-2 == 3){ imprime_linha_coluna(ti-2, 2); Serial.println(); } if (ti-2 == 4){ imprime_linha_coluna(ti-2, 2); Serial.println(); } while(digitalRead(9) == HIGH){}; } //Verifica se alguma tecla da coluna 3 foi pressionada e IDENTIFICA QUAL TECLA FOI PRESSIONADA if (digitalRead(10) == HIGH) { //imprime_linha_coluna(ti-2, 3); if (ti-2 == 1){ imprime_linha_coluna(ti-2, 3); Serial.println(); } if (ti-2 == 2){ imprime_linha_coluna(ti-2, 3); Serial.println(); } if (ti-2 == 3){ imprime_linha_coluna(ti-2, 3); Serial.println(); } if (ti-2 == 4){ imprime_linha_coluna(ti-2, 3); Serial.println(); } while(digitalRead(10) == HIGH){} } } delay(10); } void imprime_linha_coluna(int x, int y) { Serial.print("Linha : "); Serial.print(x); Serial.print(" x Coluna : "); Serial.print(y); delay(10); Serial.println(); } |
IMAGEM E VÍDEO DO CIRCUITO MONTADO E FUNCIONANDO EM PROTOBOARD COM ARDUINO UNO:
Circuito do Teclado Membrana 4×3 com Arduino
VÍDEO:
- Medindo e Monitorando a Temperatura com Arduino (Sensor LM35) - 5 de setembro de 2021
- Controle de Cargas através de Entrada Analógica com Arduino - 30 de agosto de 2021
- REVIEW E DICAS – ALICATE AMPERÍMETRO (UNI-T UT210E PRO) - 28 de agosto de 2021
Adorei saber que podemos aprender e indicar um lugar virtual de aprendizado simples, consistente, experimentado, testado e executado no fantástico mundo da Eletrônica, ou melhor, das Eletrônicas, isso porque pelo que conhecemos já são 2 (duas): ANALÓGICA & DIGITAL. 😉
Muito Obrigado Carol! 🙂