Publicado por el 18 septiembre, 2015 Deja tus dudas en los comentarios
Dificultad bajaComplejidad baja
CC BY-SA 4.0

En anteriores tutoriales hemos visto como podemos imprimir en una pantalla LCD texto y datos para poder mostrarlos al usuario de la electrónica que estemos diseñando. Si te has fijado todos los tutoriales los he realizado con la LCD KeyPad Shield, lo cual no solo tiene una pantalla LCD de caracteres si no que también tienen un pequeño teclado formado por 5 botones más el de Reset del microcontrolador.



Así que, esto junto al título que tiene el tutorial te puede dar una idea de sobre que voy a hablar en esta ocasión, es fácil, toca aprender como usar los botones del la LCD Keypad Shield, la cual yo he conseguido gracias a los compañeros de GearBest y que tu puedes conseguir desde aquí.

LCD Keypad Shield

LCD Keypad Shield

A pesar de lo que puedas pensar a primera vista, para controlar los 5 botones no se usan 5 pines digitales como estaríamos acostumbrados a usar con el método tradicional, sino que solo usamos un pin analógico, en el cual podemos medir distintos niveles de tensión según el botón que pulsemos. Está técnica aunque no nos permite hacer lecturas rápidas de cambio de botón, hay que reconocer que es una decisión muy inteligente por parte de los creadores de la placa.

Aun así, no te lleves las manos a la cabeza, no es una «cosa» difícil de controlar puesto que tanto si usas la función que te dejo a continuación como si lo haces a pelo, leer que botón se ha pulsado no es nada difícil de conseguir.

 

int read_LCD_buttons()
{
adc_key_in = analogRead(0);
if (adc_key_in < 50) return 1;
if (adc_key_in < 250) return 2;
if (adc_key_in < 450) return 3;
if (adc_key_in < 650) return 4;
if (adc_key_in < 850) return 5;

return 0;
}

Básicamente lo que hace la función es analizar el pin analógico A0 y comprobar cual es su nivel de tensión, si se pulsa alguno de los botones nos devolverá el número del botón pulsado, que en este caso serán:

  1. Botón derecho
  2. Botón arriba
  3. Botón abajo
  4. Botón izquierda
  5. Botón selección

De esta forma llamando a la función podemos saber que botón se ha pulsado. Una vez que sabemos esto vamos te dejo con el siguiente vídeo para que veas un poco más en profundidad como usar la shield y un poco más abajo tienes el código que uso en el vídeo.

 




#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int analogico  = 0;

void setup()
{  lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("RI con GearBest");
}

void loop()
{
lcd.setCursor(0,1);
analogico = analogRead(0);
if( analogico >= 900)
lcd.print("              ");
else if( analogico >= 600)
lcd.print("Seleccion     ");
else if (analogico >= 400)
lcd.print("Izquierda     ");
else if (analogico >= 250)
lcd.print("Abajo         ");
else if (analogico >= 50)
lcd.print("Arriba        ");
else if (analogico >= 0)
lcd.print("Derecha       ");
}
Sobre el autor
Ingeniero Electrónico Industrial y Automático, amante de la comunicación audiovisual y de la divulgación ingenieril y científica. Friki de Star Wars, cuenta más de lo que parece. Puedes saber más sobre mi y sobre mis trabajos en enrique.rinconingenieril.es
Artículos relacionados
Deja un comentario