Skip to main content

LCD

La pantalla LCD

Las pantallas Liquid Cristal Display es la forma más sencilla de poner una interfaz de texto a nuestro Arduino.

via GIPHY

La pantalla LCD tiene un precio muy bajo, el más común es el Hitachi HD44780 monocromo con configuración 16 caracteres y 2 líneas (16x2) pero también se venden 20×02, 20×04 y 40×02.

Su conexión DIRECTA con el Arduino no es recomendable por la cantidad de cables que se necesitan y el código elaborado, pero tiene la ventaja de tener total libertad en creación de caracteres y control. Si quieres ver esta opción puedes ver la página de Luis LLamas

Conexión I2C

Como hemos dicho en La pantalla LCD no es recomendable su conexión directa con Arduino, para ello está este controlador que permite su conexión utilizando sólo dos cables. Los dos componentes pueden salir por menos de 5€.

Su conexión con el LCD tiene que ser tal y como indica la imagen, y soldando los terminales con cuidado: CC-BY-SA Luis Llamas

Conexión con el Arduino

La conexión tiene serie tiene que ser en los pines A4 y A5 exclusivamente en el Arduino Uno pues son los dedicados para el protocolo serie I2C que veremos más adelante. Para otras placas ver la página de Luis Llamas.

El esquema es muy sencillo:

CC-BY-SA Luis Llamas

Contraste

Tiene un potenciómetro azul para regular el contraste, bastante sensible por cierto (una poca variación hace que nuestro texto no se vea correctamente):

Montaje 11 Escaneo

El bus I2C está vinculado en el Arduino Uno a los Pines A4 y A5 como hemos visto en la anterior página, el protocolo serie I2C necesita la librería Wire.h (Actualmente WireData) pero la dirección de dispositivo no lo sabemos PARA ELLO HAY QUE EJECUTAR ESTE CÓDIGO:

https://create.arduino.cc/editor/javierquintana/0f2a1666-cec2-43ad-a978-e83c421316a5/preview

Extraído de Arduino.cc o también de Luis Llamas

Nos tiene que salir lo siguiente:

En mi caso como ves la dirección me ha salido 0x3F pero puede ser cualquier otro, por ejemplo otro valor muy típico es 0x27

Librería LiquidCrystal

Sólo nos falta incorporar la librería LiquidCrystal_I2C que te lo puedes descargar aquí

Una vez descargado, es un fichero comprimido .zip o .rar no lo descomprimas directamente desde el menú del entorno de programación lo incorporas de esta manera :

 

Principales funciones

LiquidCrystal_I2C(lcd_Addr, lcd_cols, lcd_rows) Crea una variable (informáticamente un objeto de la clase LiquidCrystal_I2C) para poder utilizar sus funciones, hay que indicar entre paréntesis la dirección, columnas y filas indicadas. Por ejemplo LiquidCrystal_I2C lcd(0x3F,16,2);

¿No sabes la dirección?. Eso es que te has saltado lo que hemos explicado anteriormente. En mi caso es 0x3F.

Después de crear esa variable hay que inicializarlo con lcd.init()

lcd es el nombre de la variable, puedes poner el nombre que quieras

  • lcd.clear() Borra la pantalla y posiciona el cursor en la esquina superior izquierda (0,0).
  • lcd.setCursor(columna, fila) Posiciona el cursor del LCD en la posición indicada por columna y fila.
  • lcd.print("texto") Escribe el texto
  • lcd.scrollDisplayLeft() Se desplaza el contenido de la pantalla (texto y el cursor) un espacio hacia la izquierda.
  • lcd.scrollDisplayRight() Se desplaza el contenido de la pantalla (texto y el cursor) un espacio a la derecha.
  • lcd.backlight() Enciende la Luz del Fondo del LCD
  • lcd.noBacklight(); Apaga la Luz del Fondo del LCD
  • lcd.createChar (num, datos) Crea un carácter personalizado permite crear hasta 8. Para usar esta función ver esta página.

Montaje 12 Texto en LCD

Vamos a realizar un ejemplo para practicar:

  • El encendido y apagado de la pantalla
  • Visualización de texto
  • Visualización de texto con desplazamiento

Practicaremos qué código tiene que estar en el código dentro de setup y qué código dentro de bool:

El código es sencillo, la primera parte que sólo lo hace una vez, tiene que estar en setup y en loop sólo la parte de que se desplaza contínuamente.

OJO CAMBIA TU DIRECCIÓN 0x3F si no es esa

https://create.arduino.cc/editor/javierquintana/8c633ec1-0e2a-4c5f-8fa0-a0a1bb31645c/preview