
Pantallas LCD
- AGR
- Electrónica , Programación
- 04 Dec, 2024
Introducción a las Pantallas LCD
Las pantallas LCD (Liquid Crystal Display) son dispositivos electrónicos utilizados para mostrar información de manera clara y eficiente. Estas pantallas son muy comunes en proyectos de microcontroladores porque permiten mostrar mensajes, valores de sensores y otros datos de forma visual. Las pantallas LCD I2C, como la utilizada en este proyecto, simplifican la conexión al usar solo dos cables para comunicación: SDA (datos) y SCL (reloj).
La ventaja de usar pantallas LCD I2C es que requieren menos pines en el microcontrolador, lo que deja más espacio para conectar otros dispositivos. Además, con librerías como LiquidCrystal_I2C.h
, podemos programar estas pantallas de manera sencilla.
Explicación del Código
A continuación, explicamos cada sección del código para entender su funcionamiento y cómo interactúa con la pantalla LCD.
1. Importación de Librerías
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
Wire.h
: Maneja la comunicación I2C entre el microcontrolador y la pantalla LCD.LiquidCrystal_I2C.h
: Proporciona métodos para controlar la pantalla LCD.
2. Configuración de la Pantalla
LiquidCrystal_I2C lcd(0x20,16,2);
Aquí se crea un objeto lcd
con la dirección I2C de la pantalla (0x20
) y las dimensiones de la pantalla (16 columnas y 2 filas).
3. Configuración Inicial (setup
)
void setup() {
lcd.init(); // Inicializa la pantalla LCD
lcd.backlight(); // Enciende la luz de fondo
lcd.print("Hola!"); // Muestra "Hola!" en la pantalla
delay(2000); // Espera 2 segundos
lcd.clear(); // Limpia la pantalla
}
- Se inicializa la pantalla y se enciende la luz de fondo.
- Se muestra el mensaje “Hola!” durante 2 segundos y luego se limpia.
4. Bucle Principal (loop
)
void loop() {
barridoTexto("Mi nombre es Juanito");
delay(2000);
barridoTexto("Aprendamos a programar microcontroladores!");
delay(2000);
}
- La función
barridoTexto
permite mostrar mensajes largos en la pantalla desplazándolos. - Cada mensaje se muestra por 2 segundos antes de cambiar al siguiente.
5. Función Personalizada: barridoTexto
void barridoTexto(String mensaje) {
lcd.clear();
int longitud = mensaje.length();
for (int i = 0; i < longitud; i++) {
lcd.clear();
lcd.print(mensaje.substring(i, i + 16));
delay(250);
}
}
Esta función permite mostrar textos largos en una pantalla de 16 caracteres realizando un desplazamiento o barrido:
- Se calcula la longitud del mensaje.
- Se muestran subcadenas de 16 caracteres, desplazándolas de forma continua.
Retos Sencillos
- Reto 1: Mensaje Personalizado
Cambia el mensaje “Mi nombre es Juanito” por tu propio nombre o un mensaje divertido. Observa cómo se muestra en la pantalla.
- Reto 2: Mensajes Alternantes
Programa la pantalla para alternar entre dos mensajes cada 3 segundos. Ejemplo: “¡Hola!” y “¡Bienvenido!”.
Retos Adicionales
-
Reto: Reloj Digital
- Programa la pantalla para mostrar un reloj que cuente los segundos desde que el programa inicia.
- Usa una variable para llevar el conteo de los segundos y actualiza el valor en la pantalla en tiempo real.
-
Reto: Texto Alternante
- Crea un programa que permita alternar entre diferentes mensajes en la pantalla al presionar un botón.
- Usa un pulsador conectado al microcontrolador para cambiar entre mensajes como “¡Hola!”, “Aprendamos Arduino”, y “¡Sigue explorando!”.
Recursos
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Crear el objeto lcd: dirección 0x3F y 16 columnas x 2 filas
LiquidCrystal_I2C lcd(0x20,16,2);
void setup() {
// Inicializar el LCD
lcd.init();
// Encender la luz de fondo.
lcd.backlight();
// Escribir el mensaje inicial.
lcd.print("Hola!");
delay(2000);
lcd.clear();
}
void loop() {
// Mensaje con barrido de texto
barridoTexto("Mi nombre es Juanito");
delay(2000);
// Mostrar un segundo mensaje
barridoTexto("Aprendamos a programar microcontroladores!");
delay(2000);
}
// Función para barrido de texto
void barridoTexto(String mensaje) {
lcd.clear();
int longitud = mensaje.length();
for (int i = 0; i < longitud; i++) {
lcd.clear();
// Subcadena que se muestra según la posición
lcd.print(mensaje.substring(i, i + 16));
delay(250);
}
}