0. Componentes y programación necesaria para un Shield LCD Keypad 16x2 de Arduino

Componentes requeridos:

{Product:2000}{Product:454}

I. Cómo utilizar una pantalla LCD 16x2 en Arduino

La pantalla que vamos a usar en este breve tutorial, es una pantalla de 16x2 típica, con interfaz I2C, lo que quiere decir que viene con el controlador para una configuración más rápida, sin conectar tantos pines. En nuestro caso viene en formato Shield para la Arduino UNO, con el plus añadido de 6 botones programables.

La mayor parte de estas pequeñas pantallas LCD de 2 filas y 16 caracteres se basan en el Hitachi HD44780 u otro microprocesador compatible.

Para saber más sobre estas pantallas, puede consultar sobre nuestro: Tutorial de la pantalla LCD con Arduino Uno

II. Cómo utilizar el Shield LCD Keypad 16x2 para Arduino UNO

Este Shield es mucho más práctico para proyectos que requieran la visualización de datos, y sobre todo menús, ya que gracias a los botones que incluye puedes navegar por ellos.

III. Procedimientos experimentales

Conexión

La conexión es extremadamente sencilla, ya que el "escudo" se conecta sobre la placa Arduino UNO y ya. 

Típico problema: No ven los datos, la pantalla LCD no funciona, no muestra los valores por pantalla, etc.

Este problema nos suele pasar mucho al principio, pero se puede solucionar ajustando el brillo con potenciómetro. Como es un potenciómetro de rosca sin fin, parece que gires a un lado y a otro pero no cambie. Debes tener paciencia, y girar en sentido de las agujas del reloj. No hace falta que estés más de 2 minutos y deberías ver ya los datos cuando tu código esté cargado.

De seguir sin funcionar, es posible que el fallo esté en el código. 

Los pines del propio shield van internamente según la tabla:

PIN FUNCIÓN
Analog 0 Button(select, up, right, down and left)
Digital 4 DB4
Digital 5 DB5
Digital 6 DB6
Digital 7 DB7
Digital 8 RS (Data or signal Display Selection)
Digital 9 Enable
Digital 10 Backlit Control

Código

Abre Arduino IDE e instala las siguientes librerías:

Al principio, debes agregar la librería "LiquidCrystal" en Arduino IDE. Para ello instala desde el Gestor de Librerías desde Programa -> Incluir biblioteca -> Administrar Librerías ), buscar el nombre de la librería y pulsa instalar. Por defecto se instala la última versión.

Ahora, abre un nuevo sketch y pega el siguiente código:

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int lcd_key     = 0;

int adc_key_in  = 0;

#define btnRIGHT  0

#define btnUP     1

#define btnDOWN   2

#define btnLEFT   3

#define btnSELECT 4

#define btnNONE   5

int read_LCD_buttons()  // para leer los botones

{ adc_key_in = analogRead(0);      // Leemos A0

  // Mis botones dan:  002, 130, 306,481,720

  // Y ahora los comparamos con un margen comodo

  if (adc_key_in > 900) return btnNONE;     // Ningun boton pulsado

  if (adc_key_in < 50)   return btnRIGHT;

  if (adc_key_in < 250)  return btnUP;

  if (adc_key_in < 450)  return btnDOWN;

  if (adc_key_in < 650)  return btnLEFT;

  if (adc_key_in < 850)  return btnSELECT;

  return btnNONE;  // Por si todo falla

}

void setup()

{ lcd.begin(16, 2);              // Inicializar el LCD

  lcd.setCursor(0, 0);

  lcd.print("SolectroShop");     // print a simple message

}

void loop()

   {  lcd.setCursor(9,1);              // Cursor a linea 2, posicion 9

      lcd.print(millis()/1000);        // Imprime contador en segundos

      lcd.setCursor(13, 0);            // Cursor a linea 1, posicion 13

      lcd.print(adc_key_in);           // Imprime el valor leido en la puerta A0

      lcd.setCursor(0,1);              // Cursor a linea 2, posicion 1

 

      lcd_key = read_LCD_buttons();

      if( lcd_key == btnRIGHT)

              lcd.print("RIGHT ");

      else if ( lcd_key == btnLEFT )

              lcd.print("LEFT   ");

      else if ( lcd_key == btnUP)

              lcd.print("UP    ");

      else if ( lcd_key == btnDOWN)

              lcd.print("DOWN  ");

      else if ( lcd_key == btnSELECT)

              lcd.print("SELECT");

      else if ( lcd_key == btnNONE)

              lcd.print("NONE  ");

   }

Una vez pegado, ya puedes subir el programa, y podrás ver el mensaje "SolectroShop", así como que no hay ningún botón pulsado. Cuando pulses uno se ajustará el valor leído por el A0, que sacará pon pantalla, junto con la tecla pulsada. muestra también abajo a la derecha un contador en segundos, que puedes reiniciar con la tecla reset.