Conexión del módulo LCD 16x2 con Arduino

La comunicación entre dispositivos electrónicos ha avanzado enormemente, y uno de los componentes más útiles en proyectos de Arduino es el LCD de caracteres. Si alguna vez has querido mostrar información en tiempo real, como datos de sensores o mensajes personalizados, un LCD puede ser la solución perfecta. En este artículo, exploraremos a fondo cómo conectar y utilizar un LCD 16x2 con Arduino, proporcionando ejemplos prácticos y explicaciones claras para que cualquier persona, sin importar su nivel de experiencia, pueda seguirlo.

Los LCD 16x2 son pantallas versátiles que permiten mostrar 16 caracteres en dos líneas. Su uso no se limita a un solo tipo de proyecto; son ideales para todo, desde simples indicadores de estado hasta complejas interfaces de usuario. Así que, si estás listo para iluminar tu proyecto, ¡sigue leyendo!

Índice de contenido
  1. Descripción general del hardware
  2. Comprobación de un LCD de caracteres
  3. Conexión de un LCD 16x2 a un Arduino
  4. Código de ejemplo para Arduino
    1. Explicación del código
  5. Ejemplo de texto desplazante
    1. Código de ejemplo para desplazamiento en Arduino
    2. Explicación del código de desplazamiento
  6. Otras funciones útiles de la biblioteca LiquidCrystal
  7. Generación de caracteres personalizados para LCD 16x2
    1. Generador de caracteres personalizados
    2. Código de ejemplo para caracteres personalizados
    3. Explicación del código de caracteres personalizados

Descripción general del hardware

Los LCD de caracteres son pantallas diseñadas específicamente para mostrar letras, números y símbolos. En un LCD 16x2, puedes visualizar 16 caracteres por línea en un total de dos líneas. Si miras de cerca la pantalla, notarás pequeños cuadros rectangulares que representan cada posición de carácter. Dentro de cada uno de estos cuadros, hay una cuadrícula de 5x8 píxeles que se iluminan en diferentes patrones para formar letras, números o símbolos.

El componente central que hace que esto funcione es el controlador Hitachi HD44780, que se encarga de gestionar las señales necesarias para controlar los cristales líquidos y definir lo que se muestra en la pantalla. Estos LCD están disponibles en varias configuraciones, incluyendo 16x1, 16x4 y 20x4, lo que ofrece flexibilidad a la hora de elegir el tamaño adecuado para tu proyecto.

Una de las ventajas de estos displays es su facilidad de intercambio. Si decides cambiar a un LCD de diferente tamaño o color, generalmente puedes hacerlo sin necesidad de reconfigurar todo el cableado, solo tendrás que hacer ajustes menores en tu código.

A continuación se presenta el pinout de un LCD estándar de 16 pines:

  • GND: Pin de tierra.
  • VCC: Pin de alimentación, típicamente conectado a 5V.
  • V0: Controla el contraste de la pantalla, conectado a un potenciómetro.
  • RS: Determina si se envía un comando o datos de carácter.
  • RW: Establece si se está leyendo o escribiendo datos.
  • E: Indica al LCD cuándo debe leer los datos.
  • D0-D7: Líneas de datos que transportan información.
  • A y K: Alimentación del LED de retroiluminación.

Comprobación de un LCD de caracteres

Ahora que tienes una idea clara del hardware, es hora de probar el LCD. Conectar el LCD a un Arduino es un proceso sencillo pero crucial.

Primero, conecta los pines de 5V y GND del Arduino a la fuente de alimentación de tu protoboard, y luego conecta el LCD. Recuerda que el LCD necesita alimentación en dos lugares: una para la pantalla y otra para la retroiluminación. Conecta los pines correspondientes a GND y 5V como se indica en el pinout anterior.

Una vez hecho esto, es necesario ajustar el contraste. Conecta un potenciómetro de 10K entre 5V y GND, y conecta su pin central al pin 3 del LCD. Cuando enciendas el Arduino, deberías ver la luz de fondo encenderse. Ajusta el potenciómetro hasta que aparezcan rectángulos en la pantalla, lo que indica que el LCD está listo para mostrar caracteres.

Conexión de un LCD 16x2 a un Arduino

A continuación, vamos a conectar el LCD al Arduino utilizando el modo de 4 bits. Este modo es útil porque utiliza solo cuatro pines de datos en lugar de ocho, lo que libera otros pines para otros componentes.

Para realizar esta conexión, necesitarás seis pines en total: RS, E y cuatro pines de datos (D4, D5, D6, D7). Aquí te mostramos cómo hacerlo:

  • Conecta los pines de datos del LCD (D4, D5, D6, D7) a los pines digitales 5, 4, 3 y 2 en el Arduino.
  • Conecta el pin E al pin digital 11 en el Arduino.
  • Conecta el pin RS al pin digital 12 en el Arduino.

Recuerda que ya has conectado los pines de alimentación y ajuste de contraste en la configuración anterior. Con estas conexiones, tu LCD está completamente cableado y listo para mostrar mensajes una vez que subas el código correspondiente.

Código de ejemplo para Arduino

El siguiente código de ejemplo imprime “¡Hola Mundo!” en el LCD. Prueba este código en tu Arduino y luego lo desglosaremos en detalle.


// incluir la biblioteca
#include 

// Crea un objeto LCD. Parámetros: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // configurar el número de columnas y filas del LCD
  lcd.begin(16, 2);
  // Limpiar la pantalla del LCD
  lcd.clear();
}

void loop() {
  // Imprimir un mensaje en el LCD.
  lcd.print("¡Hola Mundo!");
  // Mover el cursor a la columna 0, línea 1
  lcd.setCursor(0, 1);
  // Imprimir otro mensaje en el LCD.
  lcd.print("Tutorial LCD");
}

Si todo está correctamente conectado y el contraste ajustado, deberías ver “¡Hola Mundo!” en la primera línea y “Tutorial LCD” en la segunda línea de tu LCD.

Explicación del código

El código comienza incluyendo la biblioteca LiquidCrystal, que es esencial para controlar los LCD basados en el controlador Hitachi HD44780. Esta biblioteca viene preinstalada con el IDE de Arduino.

Luego, se crea un objeto de la clase LiquidCrystal especificando los números de los pines conectados al RS, E y los cuatro pines de datos. Este objeto te permite controlar el LCD.

En la función setup(), se inicializa la interfaz del LCD y se especifican sus dimensiones. La función clear() se utiliza para limpiar la pantalla y posicionar el cursor en la esquina superior izquierda.

En el ciclo principal (loop()), se utiliza la función print() para mostrar el texto “¡Hola Mundo!” en el LCD. Luego, se cambia la posición del cursor para mostrar un segundo mensaje en la segunda línea.

Ejemplo de texto desplazante

Si deseas mostrar un mensaje que sea más largo que 16 caracteres o crear un efecto de marquesina, puedes usar las funciones scrollDisplayLeft() o scrollDisplayRight() para mover el texto a través de la pantalla.

Código de ejemplo para desplazamiento en Arduino

El siguiente código muestra cómo desplazar un mensaje continuamente hacia la izquierda:

#include 

// Crea un objeto LCD. Parámetros: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // configurar el número de columnas y filas del LCD
  lcd.begin(16, 2);
  // Limpiar la pantalla del LCD
  lcd.clear();
  // Imprimir un mensaje en el LCD.
  lcd.print("Demostración de texto desplazante");
  delay(1000); // pausa para leer el mensaje inicialmente
}

void loop() {
  lcd.scrollDisplayLeft(); // desplazar todo hacia la izquierda por una posición
  delay(300); // pequeña pausa para visible velocidad de desplazamiento
}

Cuando subas este código a tu Arduino, el LCD mostrará un mensaje que se desplaza.

Explicación del código de desplazamiento

En este ejemplo, imprimimos un mensaje que tiene 36 caracteres en total en el LCD. Dado que el display solo puede mostrar 16 caracteres a la vez, solo se verá una parte del mensaje inicialmente.

En la función loop(), se llama a lcd.scrollDisplayLeft(), que mueve todo el contenido del display un espacio a la izquierda. Al repetir esto con un breve retraso, el mensaje parece moverse suavemente a través de la pantalla.

Otras funciones útiles de la biblioteca LiquidCrystal

El objeto LiquidCrystal proporciona muchas funciones útiles para controlar tu LCD. Aquí hay algunas de las más destacadas:

  • lcd.home(): Mueve el cursor de vuelta a la esquina superior izquierda del LCD sin borrar lo que ya está en pantalla.
  • lcd.blink() y lcd.noBlink(): Encienden o apagan un cursor parpadeante en la posición actual del cursor.
  • lcd.cursor() y lcd.noCursor(): Controlan la aparición de una línea subrayada donde se escribirá el próximo carácter.
  • lcd.display() y lcd.noDisplay(): Permiten encender o apagar todo el display sin borrar el contenido almacenado en su memoria.

Experimenta con estas funciones en tu propio código para crear displays más dinámicos e interactivos en tus proyectos.

Generación de caracteres personalizados para LCD 16x2

A veces, es posible que desees mostrar caracteres especiales que no forman parte del alfabeto estándar, como un símbolo de corazón, un grado (°) para lecturas de temperatura, o íconos divertidos como flechas o notas musicales.

La buena noticia es que los LCD HD44780 permiten crear hasta ocho caracteres personalizados. Cada carácter se muestra usando una pequeña cuadrícula de píxeles de 5x8. Para crear tu propio carácter, debes decidir qué puntos deben encenderse y cuáles deben apagarse.

Para crear un carácter personalizado, primero debes hacer un arreglo de 8 bytes en tu código. Cada byte representa una fila horizontal de tu carácter, comenzando desde la fila superior hasta la inferior. Solo los primeros 5 bits de cada byte se utilizan, ya que el carácter tiene un ancho de 5 píxeles.

Una vez que hayas diseñado tu carácter con el arreglo, puedes usar la función createChar() para almacenarlo en la memoria CGRAM del LCD, que está diseñada para guardar caracteres personalizados.

Generador de caracteres personalizados

Crear caracteres personalizados nunca ha sido tan fácil. Hay herramientas en línea que permiten hacer esto de manera sencilla. Puedes hacer clic en cualquier pixel en una cuadrícula y el código para tu carácter se genera automáticamente.

Las posibilidades son prácticamente infinitas: puedes crear flechas, animales simples, personajes de juegos, símbolos del tiempo, o cualquier ícono pequeño que quepa en la cuadrícula de 5x8. Sin embargo, recuerda que la biblioteca LiquidCrystal solo permite usar ocho caracteres personalizados a la vez.

Código de ejemplo para caracteres personalizados

El siguiente código muestra cómo mostrar tus caracteres personalizados en el LCD:


// incluir la biblioteca
#include 

// inicializar la biblioteca con los números de los pines
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// crear algunos caracteres personalizados
byte Corazon[8] = {
  0b00000,
  0b01010,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000,
  0b00000
};

byte Campana[8] = {
  0b00100,
  0b01110,
  0b01110,
  0b01110,
  0b11111,
  0b00000,
  0b00100,
  0b00000
};

void setup() {
  // inicializar el LCD y establecer el número de columnas y filas
  lcd.begin(16, 2);
  // crear un nuevo carácter
  lcd.createChar(0, Corazon);
  lcd.createChar(1, Campana);
  // limpiar la pantalla del LCD
  lcd.clear();
  // imprimir un mensaje en el LCD
  lcd.print("Carácter Personalizado");
}

void loop() {
  // imprimir todos los caracteres personalizados
  lcd.setCursor(0, 1);
  lcd.write(byte(0)); // Corazón

  lcd.setCursor(2, 1);
  lcd.write(byte(1)); // Campana
}

Cuando subas este código a tu Arduino, el LCD mostrará el mensaje que has definido junto con los caracteres personalizados.

Explicación del código de caracteres personalizados

Después de incluir la biblioteca LiquidCrystal y configurar el objeto LCD, el código define arreglos especiales para nuestros caracteres personalizados. Cada arreglo tiene exactamente 8 bytes, y cada byte controla una fila de puntos en nuestra cuadrícula de 5x8.

El ejemplo incluye dos caracteres personalizados: un corazón y una campana. En la función setup(), usamos createChar() para almacenar nuestros caracteres en la memoria del LCD. En el ciclo principal, mostramos estos caracteres usando write().

Con todo esto, ahora tienes un amplio conocimiento sobre cómo usar un LCD con Arduino, desde conexiones básicas hasta la creación de caracteres personalizados. ¡Es hora de experimentar y dejar volar tu creatividad en tus proyectos!

Estos temas te pueden interesar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tu puntuación: Útil

Subir