fbpixel
Etiquetas:

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.

robotdyn-analog-keypad-4x4-1 Usar um teclado 4x4 analógico com o Arduino

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.

robotdyn-analog-keypad-4x4-principle Usar um teclado 4x4 analógico com o Arduino

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.

robotdyn-analog-keypad-4x4-pinout Usar um teclado 4x4 analógico com o 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.

robotdyn-analog-keypad-4x4-serial-monitor Usar um teclado 4x4 analógico com o Arduino

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

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie