Teclado Arduino con un solo pin

Teclado Arduino usando un solo pin

Teclado para conectar a Arduino usando un solo pin analógico (A0).

El montaje está basado en el que se puede ver en el vídeo https://www.youtube.com/watch?v=G14tREsVqz0 de Hari Wiguna.

Las resistencias utilizadas son de 4,3 Kohms y de 910 Ohms porque eran las que tenía a mano y más aproximadas a las que proponen en el vídeo. El funcionamiento del montaje con estos valores es el correcto y se pueden identificar bien las teclas pulsadas en cada momento.

En el programa en Arduino se pueden hacer pruebas para ver el valor de resistencia que devuelve la pulsación de cada tecla y configurar la aplicación según esos valores.

Resistencia que se obtiene en el pin A0 de Arduino al pulsar las teclas con los valores de resistencias utilizados en este montaje:

Tecla pulsadaResistencia obtenida
Sin pulsar teclasEntre 1017 y 1019 Ohmios
Tecla '1'404 Ohmios
Tecla '2'312 Ohmios
Tecla '3'188 Ohmios
Tecla 'A'5 Ohmios
Tecla '4'636 Ohmios
Tecla '5'602 Ohmios
Tecla '6'562 Ohmios
Tecla 'B'514 Ohmios
Tecla '7'741 Ohmios
Tecla '8'723 Ohmios
Tecla '9'704 Ohmios
Tecla 'C'682 Ohmios
Tecla '*'801 Ohmios
Tecla '0'790 Ohmios
Tecla '#'778 Ohmios
Tecla 'D'766 Ohmios

El montaje se ha realizado en una placa perforada en la que se han soldado por la parte inferior los pin usando cables

El montaje se ha realizado con alimentación de 5V que se obtiene del Arduino. Si se utilizan otros voltajes habría que calibrar los valores en ohmios que se obtienen al pulsar cada tecla. El montaje utiliza 3 cables para conectarse con Arduino: un cable para el positivo de la alimentación, otro para la masa y un tercero para conectarse con el pin analógio A0 del Arduino.


Programa utilizado en este montaje

// Teclado conectado al pin analógico A0
// Montaje basado en el que se puede ver en...
// https://www.youtube.com/watch?v=G14tREsVqz0

void setup () {
  Serial.begin(115200);
}
void loop()
{
  int value = analogRead(A0);
  // Serial.println(value);

  // Tecla '1' - Valor: 404
  if ((value > 399) && (value < 409)) {
    Serial.println('1');
    Serial.println(value);
    delay(100);
  }
  
  // Tecla '2' - Valor: 312 
  if ((value > 307) && (value < 317)) {
    Serial.println('2');
    Serial.println(value);
    delay(100);
  }

  // Tecla '3' - Valor: 188
  if ((value > 183) && (value < 203)) {
    Serial.println('3');
    Serial.println(value);
    delay(100);
  }

  // Tecla 'A' - Valor: 5
  if ((value > 0) && (value < 10)) {
    Serial.println('A');
    Serial.println(value);
    delay(100);
  }

  // Tecla '4' - Valor: 636
  if ((value > 631) && (value < 641)) {
    Serial.println('4');
    Serial.println(value);
    delay(100);
  }

  // Tecla '5' - Valor: 602
  if ((value > 597) && (value < 607)) {
    Serial.println('5');
    Serial.println(value);
    delay(100);
  }

  // Tecla '6' - Valor: 562
  if ((value > 557) && (value < 567)) {
    Serial.println('6');
    Serial.println(value);
    delay(100);
  }

  // Tecla 'B' - Valor: 514
  if ((value > 509) && (value < 519)) {
    Serial.println('B');
    Serial.println(value);
    delay(100);
  }

  // Tecla '7' - Valor: 741
  if ((value > 736) && (value < 746)) {
    Serial.println('7');
    Serial.println(value);
    delay(100);
  }

  // Tecla '8' - Valor: 723
  if ((value > 718) && (value < 728)) {
    Serial.println('8');
    Serial.println(value);
    delay(100);
  }

  // Tecla '9' - Valor: 704
  if ((value > 699) && (value < 709)) {
    Serial.println('9');
    Serial.println(value);
    delay(100);
  }

  // Tecla 'C' - Valor: 682
  if ((value > 677) && (value < 687)) {
    Serial.println('C');
    Serial.println(value);
    delay(100);
  }

  // Tecla '*' - Valor: 801
  if ((value > 796) && (value < 806)) {
    Serial.println('*');
    Serial.println(value);
    delay(100);
  }

  // Tecla '0' - Valor: 790
  if ((value > 785) && (value < 795)) {
    Serial.println('0');
    Serial.println(value);
    delay(100);
  }

  // Tecla '#' - Valor: 778
  if ((value > 773) && (value < 783)) {
    Serial.println('#');
    Serial.println(value);
    delay(100);
  }

  // Tecla 'D' - Valor: 766
  if ((value > 761) && (value < 771)) {
    Serial.println('D');
    Serial.println(value);
    delay(100);
  }

  delay(200);  

}

/*
Resistencia que se obtiene en el pin al pulsar las teclas:

Sin pulsar teclas - Valor: 1017 a 1019

Tecla '1' - Valor: 404
Tecla '2' - Valor: 312 
Tecla '3' - Valor: 188
Tecla 'A' - Valor: 5

Tecla '4' - Valor: 636
Tecla '5' - Valor: 602
Tecla '6' - Valor: 562
Tecla 'B' - Valor: 514

Tecla '7' - Valor: 741
Tecla '8' - Valor: 723
Tecla '9' - Valor: 704
Tecla 'C' - Valor: 682

Tecla '*' - Valor: 801
Tecla '0' - Valor: 790
Tecla '#' - Valor: 778
Tecla 'D' - Valor: 766
*/

Pulsa aquí para descargar el código "teclado1pin.ino"