Pantallas LCD - Configuración con Arduino

Pantallas LCD - Configuración con Arduino

Las pantallas de cristal líquido o LCD son componentes electrónicos que se utilizan cuando es necesario mostrar texto al usuario. Muchos proyectos necesitan proporcionar información diversa a los usuarios que interactuarán con los equipos. Para tal caso, es necesario utilizar una pantalla de cristal líquido o LCD. Los primeros teléfonos móviles y portátiles utilizaban este tipo de pantalla para mostrar información. Gracias a su amplio uso y popularidad, hoy en día son muy baratos y fáciles de encontrar. Hoy en día, muchos equipos industriales, médicos, automotrices, etc.

La plataforma Arduino tiene una biblioteca LCD lista para usar, lo que hace más fácil la vida del programador. En este artículo veremos cómo programar y utilizar una pantalla LCD 2x16.

Las pantallas LCD tienen pines para controlar los textos que quieres escribir en la pantalla. Estos pines normalmente son 16. En la figura de abajo puedes ver la función de cada pin.La LCD 2x16 tiene interfaz de datos de 8 bits. Un pin para seleccionar registro (RS) , un pin de habilitación (E), un pin de lectura/escritura (R/W) , un pin para contraste de pantalla (VEE), un pin de voltaje, un pin de tierra y dos pines para administrar voltaje a un diodo de retroiluminación LED. Las pantallas LCD tienen una pequeña RAM donde se almacenan los caracteres que se muestran en la pantalla. La figura de abajo muestra el diagrama de bloques de una pantalla LCD. Está formado principalmente por un controlador, memoria RAM e interfaz de comunicación.

CONECTANDO LA PANTALLA LCD CON ARDUINO

En la figura de abajo está el diagrama para conectar el LCD a la placa Arduino Uno. El voltaje de alimentación es de 5 Voltios y lo suministramos desde la propia tarjeta.

Para conectar la pantalla LCD a la placa Arduino, utilizaremos los pines de entrada y salida digitales. Cualquier pin de la placa Arduino se puede utilizar para controlar una pantalla LCD. La plataforma Arduino tiene una librería llamada LiquidCrystal,h con la que podemos controlar el LCD. Esta biblioteca se basa en programación orientada a objetos (C++) y por este motivo es necesario crear una variable de esta biblioteca para poder utilizar la biblioteca. Para ello podemos utilizar la siguiente línea de código:

Cristal líquido lcd(rs, en, d4, d5, d6, d7);

Los objetos en el lenguaje C++ son muy similares a las estructuras (struct) en el lenguaje C. Lo que hacemos en la línea de código anterior es crear un objeto o estructura de la biblioteca LiquidCrystal llamada "lcd". El nombre de la estructura puede ser cualquier cosa, siempre y cuando continúe utilizándolo en el resto del programa. La función recibe 6 parámetros, que son rs, en, d4, d5, d6, d7.

Código en Arduino

A continuación veremos el código para mostrar un mensaje sencillo en cada linea de caracteres de la LCD:


#include -LiquidCrystal.h-

#define rs 13
#define en 12
#define d4 6
#define d5 5
#define d6 4
#define d7 3

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);	/* For 4-bit mode */

void setup() 
{
  pinMode(1, OUTPUT);
  lcd.begin(16,2);					/* Initialize 16x2 LCD */
  lcd.clear();						/* Clear the LCD */
}

void loop() 
{
  digitalWrite(1,HIGH);
  lcd.setCursor(0,0);				      // Colocar el cursor en columna 0 y Fila 0
  lcd.print("Hola Mundo!!!!");			/* Print data on display */

  lcd.setCursor(0,1);				     // Colocar el cursor en columna 0 y Fila 1
  lcd.print("TIPS de Electronica");			/* Print data on display */
}

 

El programa anterior encontramos la función setup() . Dentro de esta función utilizamos la función:

lcd.begin(16, 2);

Para indicarle a la libreria que vamos a utilizar un LCD de 2 filas por 16 columnas. Si se utiliza otra pantalla con más filas o columnas, deberá especificarse aquí.

Ahora ingresamos a la función loop(). Aquí utilizamos la función lcd.setCursor(0, 1); para posicionar el cursor en la primera línea de la pantalla LCD. Esta función tiene el siguiente prototipo:

Lcd.setCursor(columna, fila);

Tenga en cuenta que 0 indica la primera posición para filas o columnas. Entonces 1 es la segunda fila o columna y así sucesivamente.

Luego escribimos ¡Hola Mundo! en la pantalla LCD. Para esto utilizamos la función:

lcd.print("¡Hola mundo!");

Cuando se ejecuta esta función, la pantalla LCD muestra el mensaje: ¡Hola, mundo!

 

Generar Caracteres Personalizados en la LCD

Puede crear caracteres personalizados y mostrarlos en la pantalla LCD. Para ello es necesario crear matrices de 8 bytes, donde se describe o define el carácter a personalizar. Esto crea una matriz de 5x8 píxeles. Para que un píxel se encienda en la pantalla LCD, debe estar configurado en lógica 1 en la matriz. 

En el siguiente vídeo puede ver la prueba del código con varios caracteres personalizados:


#include -LiquidCrystal.h-
/* Create object named lcd of the class LiquidCrystal */

#define rs 13
#define en 12
#define d4 6
#define d5 5
#define d6 4
#define d7 3

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);	/* For 4-bit mode */

byte Batery[8] = {
B00100,
B11111,
B10001,
B10001,
B11111,
B11111,
B11111,
B11111
};
byte Alien[8] = {
B11111,
B10101,
B11111,
B11111,
B01110,
B01010,
B11011,
B00000
};
byte Heart[8] = {
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
byte Bell[8] = {
B00100,
B01110,
B01110,
B01110,
B11111,
B00000,
B00100,
B00000
};
byte Speaker[8] = {
B00001,
B00011,
B01111,
B01111,
B01111,
B00011,
B00001,
B00000
};
byte Sound[8] = {
B00001,
B00011,
B00101,
B01001,
B01001,
B01011,
B11011,
B11000
};
byte Skull[8] = {
B00000,
B01110,
B10101,
B11011,
B01110,
B01110,
B00000,
B00000
};
byte Lock[8] = {
B01110,
B10001,
B10001,
B11111,
B11011,
B11011,
B11111,
B00000
};

void setup() 
{
  pinMode(1, OUTPUT);
  lcd.begin(16,2);					/* Initialize 16x2 LCD */
  lcd.clear();						/* Clear the LCD */
  lcd.createChar(0, Batery);	/* Generate custom character */
  lcd.createChar(1, Speaker);
	lcd.createChar(2, Heart);
	lcd.createChar(3, Bell);
	lcd.createChar(4, Alien);
	lcd.createChar(5, Skull);
	lcd.createChar(6, Sound);
	lcd.createChar(7, Lock);
}

void loop() 
{
  digitalWrite(1,HIGH);

  lcd.setCursor(0,0);				/* Set cursor to column 0 row 0 */
  lcd.print("Caracteres Personalizados");			/* Print data on display */

  lcd.setCursor(0,1);  
  lcd.write(byte(0));				/* Write a character to display */

  lcd.setCursor(2,1);  
  lcd.write(byte(1));

  lcd.setCursor(4,1);  
  lcd.write(byte(2));

  lcd.setCursor(6,1);  
  lcd.write(byte(3));

  lcd.setCursor(8,1);  
  lcd.write(byte(4));  

  lcd.setCursor(10,1);  
  lcd.write(byte(5));

  lcd.setCursor(12,1);  
  lcd.write(byte(6));

  lcd.setCursor(14,1);  
  lcd.write(7);  
}

 

En el siguiente vídeo puede ver este articulo:

Aprenda a Programar con el curso de Arduino

Curso con los fundamentos de la programación de Arduino para cualquier persona, desde principiantes hasta expertos, ademas podrá crear proyectos interactivos y automatizados.

 

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.