Select Page

¿Querés que tus proyectos Arduino muestren mensajes de estado, lecturas de sensores o simplemente. Estas pantallas LCD pueden ser el ajuste perfecto. Son extremadamente comunes y una forma rápida de agregar una interfaz legible a su proyecto.

Este tutorial cubrirá todo lo que necesita saber para comenzar a usar un LCD de caracteres. No solo 16×2 (1602) sino cualquier LCD de caracteres (por ejemplo, 16×4, 16×1, 20×4, que son los LCD más comunes para usar con Arduino) que se basan en el chip controlador de interfaz LCD de Hitachi llamado HD44780. Porque, la comunidad Arduino ya ha desarrollado una biblioteca para manejar LCD HD44780;

Cómo funciona el LCD

Estas pantallas LCD son ideales para mostrar solo texto / numeros, de ahí el nombre «Pantalla LCD alfanumérico». La pantalla tiene una luz de fondo LED y puede mostrar 32 caracteres ASCII en dos filas con 16 caracteres en cada fila (en el caso del lcd 16×2).

LCD para Arduino 1

Como se ve en la foto, cada carácter cuenta con una matriz de 5×8 es decir una matriz de 5 columnas por 8 filas para dibujar el caracter.

Si observas de cerca, podes ver los pequeños rectángulos de cada carácter en la pantalla y los píxeles que forman un carácter. Cada uno de estos rectángulos es una cuadrícula de 5 × 8 píxeles y esto nos abre al mundo de escribir caracteres especiales en el lcd como corazones, robots, notas musicales etc etc. En este post tenes la info.

Hoja de datos LCD 16×2

En muchos de nuestros proyectos necesitamos visualizar o monitorear parámetros, si bien una solución es los display de 7 segmentos, pero solo estamos limitados a valores numéricos e incluso si deseamos poner varios dígitos a nivel de hardware aumenta nuestro diseño electrónico por lo que necesitamos técnicas de multiplexado.

Los LCD alfanuméricos son la solución más práctica, para este problema, empezando por su bajo consumo, diferentes tamaños disponibles, y trabaja con caracteres alfanuméricos, por lo que podemos representar cualquier texto o variable.

Los LCD alfanuméricos más utilizados en el mercado son el LCD1602 y el LCD2004 con tamaños de 16×2 y 20×4 caracteres respectivamente. Entre estos tamaños también hay diferentes modelos los cuales varían en color y sobretodo en la presencia o no de un Backlight (retro iluminador incorporado)

El LCD 16x2lcd tiene una memoria interna en donde almacena todos sus caracteres alfanuméricos, los cuales podemos extender en ocho caracteres personalizados adicionales.

Los caracteres soportados por la mayoría de modelos de LCD son los siguientes:

LCD para Arduino 2

Tecnologías LCD

En el mundo Arduino, los lcd son muy importantes y es por eso que viene en varios formatos.

Uno de los más importantes es el LCD Shield que lo podemos conectar al Arduino UNO directamente sin cablear nada. Viene en formato LCD 16×2 o LCD 16×4.

El LCD 16x2 es la forma mas facil y grafica de mostrar datos en un Arduino

Estos LCD´s mencionados son alfanuméricos, pero también en formato grafico, también llamados GLCD que son una matriz de puntos gigantes que el más común es de 128×64

LCD para Arduino 3

Pero también viene en formato oled gráfico de todos los tamaños para aplicaciones a batería, que consumen muy poco.

Pines LCD 16×2 Arduino

Antes de sumergirse en la conexióny el código de ejemplo, echemos un vistazo al Pinout LCD.

16x2-Character-LCD-Display-Pinout

GND debe estar conectado a la tierra de Arduino.

VCC es la fuente de alimentación para la pantalla LCD a la que conectamos el pin de 5 voltios en el Arduino.

Vo (Contraste LCD) controla el contraste y el brillo de la pantalla LCD. Usando un divisor de voltaje simple con un potenciómetro, podemos hacer ajustes finos al contraste.

El pin RS (selección de registro) le permite al Arduino decirle a la pantalla LCD si está enviando comandos o datos. Básicamente, este pin se utiliza para diferenciar los comandos de los datos. Por ejemplo, cuando el pin RS está configurado en BAJO, entonces estamos enviando comandos a la pantalla LCD (como configurar el cursor en una ubicación específica, borrar la pantalla, desplazar la pantalla hacia la derecha, etc.). Y cuando el pin RS está configurado en ALTO, enviamos datos / caracteres a la pantalla LCD.

El pin R / W (lectura / escritura) en la pantalla LCD sirve para controlar si está leyendo o no datos de la pantalla LCD o si escribe datos en la pantalla LCD. Como solo estamos usando esta pantalla LCD como dispositivo de SALIDA, vamos a atar este pin BAJO. Esto lo obliga al modo ESCRIBIR.

El pin E (Habilitar) se usa para habilitar la pantalla. Es decir, cuando este pin se establece en BAJO, a la pantalla LCD no le importa lo que esté sucediendo con R / W, RS y las líneas del bus de datos; cuando este pin está configurado en ALTO, la pantalla LCD procesa los datos entrantes.

D0-D7 (Bus de datos) son los pines que transportan los datos de 8 bits que enviamos a la pantalla. Por ejemplo, si queremos ver el carácter «A» en mayúscula en la pantalla, configuraremos estos pines en 0100 0001 (de acuerdo con la tabla ASCII) en la pantalla LCD.

Los pines A-K (ánodo y cátodo) se utilizan para controlar la luz de fondo de la pantalla LCD.

Pin NoFunciónNombre
1Tierra (0V)Ground
2Voltaje de Operación; 5V (4.7V – 5.3V)Vcc
3Ajuste de contrastes: mediante un potenciometro (no incluido, puede ser de 1k-10k)VEE
4Selección del registro, para 0 es comandos y en 1 es para datosRegister Select
5Estado bajo para escribir y estado alto para leer el registro
Read/write
6Envia datos a los pines de datos cuando recibe un flanco de bajadaEnable
7Pines de datos 8-bit
DB0
8DB1
9DB2
10DB3
11DB4
12DB5
13DB6
14DB7
15Backlight VCC (5V)Led+
16Backlight Tierra (0V)Led-

Conectando LCD 16×2 al Arduino

Primero vamos a conectar un potenciómetro al backlight para establecer la iluminación de fondo.

Conexión backlight

LCD para Arduino 4
El potenciómetro se usa para controlar la intensidad de luz de fondo

¡Eso es! Ahora prende el Arduino, verás la luz de fondo iluminada. Y a medida que gira la perilla del potenciómetro, debe notar que aparece la primera línea de rectángulos. Si esto sucede, ¡felicidades! Su pantalla LCD funciona bien.

La gran mayoría de los LCD tienen una resistencia en serie incorporada para la retroiluminación LED. Si tiene una pantalla LCD que no incluye una resistencia, deberá agregar una entre 5V y pin 15.

Para calcular el valor de la resistencia en serie, busque la corriente de retroiluminación máxima y la caída de voltaje de retroiluminación típica de la hoja de datos. Y usando la ley de ohms simple puedes calcular el valor de la resistencia.

Con la hoja de datos que dejamos más arriba en este post, debería ser seguro usar una resistencia de 220 Ohm, sin embargo, un valor tan alto puede hacer que la luz de fondo se atenúe mucho. Hay que jugar.

Conexión datos

Antes de subir el código y enviar datos a la pantalla, conectemos la parte de datos de la pantalla LCD al Arduino.

La pantalla LCD tiene muchos pines (16 pines en total) que le mostraremos cómo conectar. Pero, la buena noticia es que no todos estos pines son necesarios para que podamos conectarnos al Arduino.

Sabemos que hay 8 líneas de datos que llevan datos sin procesar a la pantalla. Pero, los LCD HD44780 están diseñados de manera que podamos hablar con el LCD usando solo 4 pines de datos (modo de 4 bits) en lugar de 8 (modo de 8 bits). ¡Esto nos ahorra 4 pines!

Hablando de ahorrarnos pines, existe una placa que nos ahorra muchos pines conectando solo dos al Arduino. Esta placa es un adaptador serie para LCD.

Diferencia entre modos 4 u 8 bit

Es más rápido usar el modo de 8 bits, ya que toma la mitad de tiempo que usar el modo de 4 bits. Porque en el modo de 8 bits se escriben los datos de una sola vez. Sin embargo, en el modo de 4 bits, debe dividir un byte en 2 nibbles, desplazar uno de ellos 4 bits hacia la derecha y realizar 2 operaciones de escritura.

Entonces, el modo de 4 bits a menudo se usa para guardar pines de E / S. Pero, el modo de 8 bits se usa mejor cuando se requiere velocidad en una aplicación y hay al menos 10 pines de E / S disponibles.

LCD para Arduino 5

Para resumir, conectaremos la pantalla LCD usando el modo de 4 bits y, por lo tanto, solo necesitamos 6 pines: RS, EN, D7, D6, D5 y D4 para hablar con la pantalla LCD.

Ahora, conectemos la pantalla LCD al Arduino. Cuatro pines de datos (D4-D7) de la pantalla LCD se conectarán a los pines digitales de Arduino del # 4-7. El pin Enable en la pantalla LCD se conectará a Arduino # 2 y el pin RS en la pantalla LCD se conectará a Arduino # 1.

Con eso, ahora estás listo o lista para cargar un código y obtener la impresión de la pantalla.

Código Arduino LCD16x2

El siguiente sketch de prueba se imprimirá el mensaje «¡Hola Mundo!» (hello world) en la pantalla LCD.

// include the library code:
#include <LiquidCrystal.h>

// Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() 
{
	// set up the LCD's number of columns and rows:
	lcd.begin(16, 2);

	// Clears the LCD screen
	lcd.clear();
}

void loop() 
{
	// Print a message to the LCD.
	lcd.print(" Hello world!");

	// set the cursor to column 0, line 1
	// (note: line 1 is the second row, since counting begins with 0):
	lcd.setCursor(0, 1);
	// Print a message to the LCD.
	lcd.print(" LCD Tutorial");
}

Librería LiquidCrystal.h

El IDE de Arduino ya viene con una librería que nos permite manejar diferentes tamaños de LCD’s, La documentación completa la pueden encontrar en la página oficial de Arduino: LiquidCrystal

Explicamos algunas funciones principales:

LiquidCrystal(rs, en, d4, d5, d6, d7)

Función constructor, crea una variable de la clase LiquidCrystal, con los pines indicados.

begin(cols, rows)

Inicializa el LCD, es necesario especificar el número de columnas (cols) y filas (rows) del LCD.

clear()

Borra la pantalla LCD y posiciona el cursor en la esquina superior izquierda (posición (0,0)).

setCursor(col, row)

Posiciona el cursor del LCD en la posición indicada por col y row (x,y); es decir, establecer la ubicación en la que se mostrará posteriormente texto escrito para la pantalla LCD.

write()

Escribir un carácter en la pantalla LCD, en la ubicación actual del cursor.

print()

Escribe un texto o mensaje en el LCD, su uso es similar a un Serial.print

scrollDisplayLeft()

Se desplaza el contenido de la pantalla (texto y el cursor) un espacio hacia la izquierda.

scrollDisplayRight()

Se desplaza el contenido de la pantalla (texto y el cursor) un espacio a la derecha.

createChar (num, datos)

Crea un carácter personalizado para su uso en la pantalla LCD. Se admiten hasta ocho caracteres de 5×8 pixeles (numeradas del 0 al 7). Donde: num es el número de carácter y datos es una matriz que contienen los píxeles del carácter. Se verá un ejemplo de esto más adelante.

Links

A %d blogueros les gusta esto: