Conexión de teclado con un solo hilo para arduino o raspberry para ahorrar pines de conexión.
Cuando necesitamos usar un arduino uno o nano para nuestros proyectos nos pueden faltar pines, sobre todo cuando pretendemos usar un teclado alfanumérico y display.
Una opción muy buena para ahorrar pines con el teclado es conectarlo con un solo hilo en vez de los 8 que normalmente necesita conectar.
CONEXION DEL TECLADO EN ARDUINO
Para poder conectar un teclado alfanumérico en un arduino con un solo hilo necesitamos crear en las salidas del teclado un divisor de tensión con resistencias en cada uno de sus pines.
En la imagen de la cabecera tenemos un ejemplo de un teclado que solo necesita manda una señal analógica a pin A0 del Arduino.
Las resistencias que he utilizado para este divisor de tensión de Izquierda a derecha son: Una de 1k, cuatro de 47k, cuatro de 6,7k, una de 2,7k.
Puedes ver un tutorial AQUI
En la imagen nos aparece un voltaje 172.80 milivoltios que corresponde a la tecla 4. Se puede ver en el siguiente código en la condición: else if (lectura == 172.80) lcd.print(“4”);
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Pines del arduino conectado al display
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2); // Se activa el display
delay(100);
pinMode(A0, INPUT); // Pin A0 configurado como entrada
}
void loop()
{
//La variable lectura lee la señal del pin A0 y multiplicamos por el voltage de entrada
float lectura = (float) analogRead(A0)*4.8;
lcd.clear();
lcd.setCursor ( 0, 0);
lcd.print(lectura);
lcd.print(" Voltios");
Serial.println(lectura);
lcd.setCursor (0, 1);
if(lectura == 436.80)lcd.print("1"); //Si la variable es igual a voltaje se imprime 1 en el display
else if(lectura == 556.80)lcd.print("2");// igualmente que la anterior en las demas condiciones
else if(lectura == 777.60)lcd.print("3");
else if(lectura == 172.80)lcd.print("4");
else if(lectura == 187.20)lcd.print("5");
else if(lectura == 206.40)lcd.print("6");
else if(lectura == 105.60)lcd.print("7");
else if(lectura == 110.40)lcd.print("8");
else if(lectura == 120.00)lcd.print("9");
delay(500);
}
Conexión de un teclado con un solo hilo para arduino. Este teclado se puede usar para la alarma de casa con teclado que puedes encontrar en el siguiente enlace: aqui