Introducción
Leer datos de sensores y mostrarlos en el Monitor Serie de tu PC está bien para pruebas, pero si quieres crear un proyecto real (un termómetro, un medidor de distancia, un controlador de motor), necesitas que tu Arduino pueda mostrar información de forma autónoma sin depender de un ordenador conectado.
En este tutorial vamos a aprender a usar una Pantalla LCD 16x2 con módulo I2C junto con un potenciómetro. Pero no solo vamos a mostrar un número aburrido; vamos a enseñarte un truco profesional: crear una barra gráfica visual usando asteriscos (*) que se llenan o vacían según giras el potenciómetro, ideal para representar niveles de batería, volumen o intensidad de luz.
¿Por qué usar un módulo I2C para el LCD?
Las pantallas LCD tradicionales necesitan 16 cables conectados a tu Arduino, lo cual es un desastre en la protoboard y un dolor de cabeza para cablear. El módulo I2C es un adaptador que se suelda en la parte posterior del LCD y reduce todos esos cables a solo 4 conexiones (VCC, GND, SDA y SCL), ahorrando pines y simplificando enormemente el montaje.
⚠️ El Error más Común: La Dirección I2C
Para que el código funcione, debes saber la dirección hexadecimal (hex) de tu módulo I2C. La mayoría de los módulos clones usan la dirección 0x27, pero otros utilizan 0x3F. Si tu LCD no enciende o se queda iluminado sin texto, es porque estás usando la dirección incorrecta en el código. Para encontrar la dirección exacta de tu módulo, busca en el IDE el sketch "I2C Scanner" de Arduino, cárgalo y te dirá la dirección en el Monitor Serie.
Materiales Necesarios
Para realizar este proyecto necesitarás los siguientes componentes de electrónica:
| Componente | Descripción | Enlace |
|---|---|---|
| Placa Arduino UNO R3 / R4 | Placa de desarrollo base para el proyecto | Ver en Amazon |
| Pantalla LCD 16x2 con I2C | Pantalla alfanumérica con adaptador I2C integrado | Ver en Amazon |
| Potenciómetro de 10kΩ | Potenciómetro rotatorio para control analógico | Ver en Amazon |
| Protoboard | Placa de pruebas sin soldadura (400 u 830 puntos) | Ver en Amazon |
| Cables Dupont | Jumper cables Macho-Macho y Macho-Hembra | Ver en Amazon |
Esquema de Conexiones
Gracias al módulo I2C, el cableado es extremadamente simple:
- VCC del I2C: Al pin de 5V de Arduino.
- GND del I2C: Al pin GND de Arduino.
- SDA del I2C: Al pin A4 de Arduino UNO/Nano (o pin 20 en Mega).
- SCL del I2C: Al pin A5 de Arduino UNO/Nano (o pin 21 en Mega).
- Potenciómetro: Un pin extremo a 5V, el otro extremo a GND, y el pin central (wiper) al Pin Analógico A0 de Arduino.
Código de Arduino: La Barra de Asteriscos
Antes de cargar este código, asegúrate de tener instalada la librería LiquidCrystal_I2C en tu IDE de Arduino (Ve a Programa -> Incluir Librería -> Administrar Librerías, y busca "LiquidCrystal I2C" de Frank de Brabander).
Explicación del Código: Los Detalles que Importan
Este código tiene tres conceptos clave que lo hacen funcionar perfectamente:
- La función map(): Un potenciómetro conectado a un pin analógico entrega un valor entre 0 y 1023. Pero nuestra pantalla LCD 16x2 solo tiene 16 columnas. La función
map(valor, mínimo_entrada, máximo_entrada, mínimo_salida, máximo_salida)hace la matemática por ti. Si el potenciómetro está a la mitad (512),map()lo convierte en 8. Si está al máximo (1023), lo convierte en 16. Es la herramienta perfecta para adaptar escalas. - El bucle for de los Asteriscos: Usamos
for (int i = 0; i < numStars; i++)para imprimir la cantidad exacta de*correspondiente al nivel. - El bucle for de Espacios en Blanco (El Truco Pro): Este es el paso que 90% de los blogs omiten. Un LCD no "borra" lo que había antes; simplemente sobreescribe. Si tenías 12 asteriscos y el valor baja a 5, el LCD imprimirá 5 asteriscos nuevos sobre los 5 primeros, pero los 7 asteriscos antiguos de la derecha seguirán ahí. El segundo bucle
forllena de espacios vacíos" "las columnas desde el último asterisco hasta la columna 16, borrando visualmente los restos del valor anterior.
Conclusión
Mostrar datos en un LCD es imprescindible para proyectos autónomos. Usar la función map() para transformar datos en gráficos visuales (como barras de asteriscos) le da a tus proyectos un look profesional y mucho más intuitivo que leer números crudos. Este concepto de barra gráfica se puede aplicar a cualquier sensor: distancia, temperatura, luz...
Si quieres leer sensores más avanzados en lugar de un simple potenciómetro para mostrarlos en esta pantalla, te recomiendo visitar nuestro tutorial sobre Cómo leer un sensor de ultrasonidos con Arduino.
Comentarios
Publicar un comentario