Seja numa calculadora ou num interfone de edifício, utilizamos teclados numéricos com frequência. O teclado numérico 4×4 é uma matriz de 16 botões cujos estados podem ser detectados por um microcontrolador. Este módulo requer apenas uma entrada analógica do microcontrolador, ao contrário do teclado numérico 4×4 digital.
Material
- Computador
- Arduino UNO
- Cabo USB A Macho/B Macho
- Teclado 4×4 analógico
- Cabo Dupont F/M x3
Princípio de funcionamento
O teclado numérico com saída analógica é um conjunto de 16 botões montados numa matriz com resistências de pull-up de diferentes valores. Quando um botão é pressionado, o circuito se fecha com a resistência e o valor da tensão na saída analógica é diferente para cada botão. A vantagem deste tipo de circuito é que se pode gerir 16 botões com apenas 1 entrada analógica do microcontrolador. No entanto, não é possível pressionar dois botões ao mesmo tempo.
Esquema
O teclado numéricol utiliza uma entrada analógica do Arduino. Assim, ligamos a saída do teclado ao pino A0 do microcontrolador. O teclado pode ser alimentado pela saída de 5V do Arduino.
Código
O princípio para gerir o teclado numérico é ler o valor da entrada analógica que corresponde a um botão. Para isso, comparamos o valor do pino analógico com o valor atribuído a cada botão.
É importante notar que, se pressionarmos dois botões, apenas o botão com o maior valor será retido.
//Constants #define nbABtn 16 //Parameters const int abtnPin = A0; const int valThresh[nbABtn] = {1000, 900, 820, 750, 660, 620, 585, 540, 500, 475, 455, 425, 370, 300, 260, 200}; void setup() { //Init Serial USB Serial.begin(9600); Serial.println(F("Initialize System")); } void loop() { readAbtn(); } void readAbtn() { /* function readAbtn */ //// Read button states from keypad int btnId = getABtn(); if (btnId) { Serial.print("Button pressed : "); Serial.println(btnId); delay(200); } } int getABtn() { /* function getABtn */ //// Read button states from keypad int val = analogRead(abtnPin); if (val <= 200) { return 0; } else { for (int i = 0; i < 16; i++) { if (val > valThresh[i]) return i + 1; } } }
Resultado
Quando uma tecla do teclado é pressionada, observamos o valor associado ser corretamente apresentado no monitor serial.
Aplicações
- Criar uma interface com vários botões
- Criar uma fechadura operada por teclado
- Desenvolver um alarme que pode ser ativado ou desativado com uma senha
- Desenvolver uma interface MIDI
Referências
- Leia também sobre a gestão de um teclado 4×4 com saídas digitais
- Resistência de pull-up
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie