fbpixel
Etiquetas:

Tanto si se trata de una calculadora como de un teclado de edificio, solemos utilizar teclados numéricos. El teclado 4×4 es una matriz de 16 botones cuyos estados pueden ser detectados por un microcontrolador. Este módulo sólo requiere una entrada analógica del microcontrolador, a diferencia del teclado digital 4×4.

robotdyn-analog-keypad-4x4-1 Gestión de un teclado analógico 4x4 con Arduino

Material

  • Ordenador
  • Arduino UNO
  • Cable USB A Macho/B Macho
  • Teclado analógico4x4
  • cable Dupont F/M x3

Principio de funcionamiento

El teclado digital con salida analógica es un conjunto de 16 botones que se montan en una matriz con resistencias pullup de diferentes valores. Cuando se pulse un botón el circuito se cerrará con la resistencia y el valor de la tensión en la salida analógica será diferente para cada botón. La ventaja de este tipo de circuito es que puedes manejar 16 botones con sólo 1 entrada analógica del microcontrolador. Sin embargo, no es posible pulsar dos botones al mismo tiempo.

robotdyn-analog-keypad-4x4-principle Gestión de un teclado analógico 4x4 con Arduino

Esquema

El teclado digital utiliza una entrada analógica del Arduino. Así que conectamos la salida del teclado al pin A0 del microcontrolador. El teclado puede ser alimentado por la salida de 5V del Arduino.

robotdyn-analog-keypad-4x4-pinout Gestión de un teclado analógico 4x4 con Arduino

Código

Para gestionar el teclado numérico, el principio es leer el valor de la entrada analógica que corresponde a un botón. Para ello compararemos el valor del pin analógico con el valor dado a cada botón.

Es importante tener en cuenta que si pulsamos dos botones, sólo se retendrá el botón con el valor más alto.

//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

Cuando se pulsa una tecla del teclado, observamos que el valor asociado se muestra correctamente en el monitor serie.

robotdyn-analog-keypad-4x4-serial-monitor Gestión de un teclado analógico 4x4 con Arduino

Aplicaciones

  • Crear una interfaz con varios botones
  • Creación de una cerradura con teclado
  • Desarrollar una alarma que se pueda activar o desactivar con una contraseña
  • Desarrollo de una interfaz MIDI

Fuentes

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