Las pantallas LCD, abreviatura de Liquid Crystal Display o Pantalla de Cristal Líquido, son dispositivos sofisticados diseñados para la visualización gráfica de información. Estos dispositivos se caracterizan por su eficiencia en el consumo de energía y su capacidad para mostrar texto e imágenes con claridad. La mayoría de las pantallas LCD se integran con una placa de circuito que incluye pines para la entrada y salida de datos, facilitando su conexión con diversos sistemas electrónicos.
Uno de los usos más destacados de las pantallas LCD es su integración con Arduino, una plataforma de electrónica de código abierto. Arduino, conocido por su versatilidad y facilidad de uso, se complementa perfectamente con las pantallas LCD para una variedad de aplicaciones, desde proyectos de bricolaje hasta soluciones industriales.
La comunicación entre Arduino y una pantalla LCD se simplifica gracias a la librería LiquidCrystal, incluida en el Arduino IDE (Entorno de Desarrollo Integrado). Esta librería proporciona una serie de funciones y comandos que permiten a los usuarios enviar datos a la pantalla LCD de manera intuitiva y con poco código.
Explorando más a fondo el hardware de las pantallas LCD, encontramos modelos como los displays LCD de 2 filas por 16 columnas que recientemente adquirí. Estas pantallas son particularmente útiles para proyectos que requieren una visualización compacta pero efectiva de información. Con capacidad para mostrar 32 caracteres (16 en cada una de las dos filas), estas pantallas son ideales para mostrar mensajes cortos, datos de sensores, menús de interfaz de usuario, y mucho más.
El diseño de estas pantallas LCD de 2×16 se centra en la eficiencia y la funcionalidad, proporcionando una solución de visualización versátil y fácil de leer. Su capacidad para integrarse con Arduino abre un mundo de posibilidades para entusiastas de la electrónica, estudiantes, ingenieros y creadores que buscan llevar sus proyectos al siguiente nivel.
Estas pantallas que he comprado tienen un fondo azul y vienen con un LED de iluminación. Las letras son blancas y podemos desplegar cualquier tipo de texto.
Este es un ejemplo muy sencillo de un mensaje impreso con mi Arduino Mega en la pantalla LCD. Como se puede apreciar, para su funcionamiento requiere que se hagan algunas conecciones.
A continuación les presento el PINOUT de una pantalla LCD como las que les he mostrado en este post:
Estas pantallas constan de 16 pines. De izquierda a derecha, sus usos son los siguientes:
- Pin 1 – VSS o GND
- Pin 2 – VDD o alimentación (+5V)
- Pin 3 – Voltaje de contraste. Se conecta a un potenciómetro.
- Pin 4 – Selección de registro. Aquí se selecciona el dispositivo para su uso.
- Pin 5 – Lectura/Escritura. Dependiendo del estado (HIGH o LOW), se podrá escribir o leer datos en el LCD
- Pin 6 – Enable. Es el pin que habilita o deshabilita el LCD.
- Pin 7 hasta Pin 14 – Son los pines de datos por donde se envía o recibe información.
- Pin 15 – El ánodo del LED de iluminación de fondo (+5v).
- Pin 16 – El cátodo del LED de iluminación de fondo (GND).
Si contamos con una pantalla LCD y la queremos utilizar con Arduino, debemos hacer las siguientes conexiones:
Esta configuración podrá ser usada con cualquier tipo de placa Arduino. Se debe hacer lo siguiente:
-Conseguir un potenciómetro de 10 K. Los potenciómetros tienen 3 patas. La de la derecha se conecta a 5V en la placa Arduino. La pata de la izquierda se conecta en el GND de Arduino. La pata del centro se conecta al tercer pin en el LCD (Voltaje de contraste).
- Se conecta el pin 1 el LCD al GND de Arduino.
- El pin 2 del LCD va a 5V en Arduino.
- El pin 4 va al pin 12 de Arduino.
- El pin 5 se conecta a GND.
- El pin 6 del LCD va al pin 11 en Arduino.
- Los pines 7, 8, 9 y 10 del LCD no se conectan.
- Los pines 11, 12, 13 y 14 del LCD se conectan en el 5, 4, 3 y 2 del Arduino, respectivamente.
- El pin 15 se conecta en 5V y el pin 16 se conecta en GND.
Una vez hecho esto, nos dirigimos a Arduino IDE. Vamos al menú Archivo/Ejemplos/LiquidCrystal/HelloWorld.
Nos aparecerá un código que podremos subir a nuestra placa de al instante. El código lo que hará es imprimir el mensaje «hello World!» en la fila 1. En la fila 2 aparecerán los segundos que han transcurrido desde que se inició la ejecución del código.
Para este ejemplo decidí utilizar mi Arduino Nano. Estoy llevando a cabo un proyecto donde necesito utilizar una pantalla LCD por lo que decidí aprovechar la oportunidad para escribir este post.
Me compré una placa perforada y soldé los pines de mi Arduino Nano para poder trabajar de manera más cómoda con la pantalla LCD.
Usted es libre de hacer el diseño que usted prefiera. Yo decidí adaptar la pantalla LCD a la placa perforada utilizando los filamentos que conforman un cable de red RJ45.
Con unos 3 o 4 pies de cable RJ45 obtendrán una cantidad inmensa de jumpers. El RJ45 pose 8 filamentos que son muy útiles en proyectos de electrónica.
Utilicé un cable chocolate para el contraste, 2 cables verdes para el enable y el read/write, 4 cables naranjas para los pines de datos, 3 cables blancos para el GND y 2 azules para los +5V.
Soldé todo a la placa perforada y agregué un trimmer como potenciómetro para el contraste.
Una vez hecho esto podemos subir el código de Hello World a Arduino o ver los resultados.
[youtube https://www.youtube.com/watch?v=R3qpk133Scs]
A pesar de que la calidad del video no es óptima, espero que brinde una visión clara de cómo debería lucir el resultado final. Si se encuentran con que la pantalla LCD no muestra correctamente la información, les sugiero ajustar cuidadosamente el potenciómetro (o trimmer) para modificar el contraste hasta obtener la visualización deseada. Esta pequeña acción puede marcar una gran diferencia en la claridad y legibilidad de los datos mostrados en la pantalla.
Me interesa mucho conocer sus opiniones, experiencias y cualquier duda que puedan tener. Sus comentarios son valiosos, no solo para mejorar el contenido que comparto, sino también para fomentar una comunidad de aprendizaje y colaboración. ¡Espero sus aportes y preguntas!
He comprado un LCD 16 x2 con el shield incorporado para su conexión directa al arduino (el que tengo es Arduino UNO). Cuando lo conecto y le doy alimentación (sin ejecutar ningun programa) se «encienden» todos los puntos que forman los caracteres de la primera fila y la segunda queda apagada. Intento ejecutar cualquiera de los programas de ejemplo de funcionamiento de los LCD (tipo Hello world) y no cambia nada. ¿que puede estar ocurriendo?
Trataste de ajustar el potenciómetro del contraste? Si salen puros cuadros blancos significa que el contraste debe ser ajustado. Debe haber algún potenciómetro o tornillo que pueda ser ajustado
Gracias por tu respuesta. Solo hay un potenciometro y, con el LCD alimentado he variado la posición desde el máximo al mínimo y, no cambia nada. Tambien me parece extraño que solo ocurra en la primera fila, la segunda se queda apagada.
Cuando dices «cuadros puros» supongo que te refieres que´en cda caracter solo se ve un cuadrado iluminado. No es así se pueden distinguir los diferentes puntos que forman los caracteres pero, al estar todos iluminados, si se mira a cierta distancia parecen cuadrados.
Tengo entendido (lo he visto en internet) que en algunas ocasiones, dependiendo de la ciruitería interna del LCD y de como se le de alimentacion, es posible que al conectarlo se quede «colgado» y apareciendo una información fija en la pantalla y obviando las instrucciones que se le envíen después.
¿puede ser eso lo que me pasa?. ¿que hago para solucionarlo entonces?.
Gracias de nuevo.
Te recomiendo que revises munuiciosamente las conexiones por que cuando sale solo una línea de caracteres es un problema de comunicación con Arduino. Fíjate el diagrama y cuida de que cada pin vaya al puerto correspondiente en Arduino
mira, pueda que no tengas conectado el pin 6 del lcd al pin 11 del arduino, y tambn tienes que tener el potenciometro, para poder controlar la intensidad de luz en las letras… suerte amigo!
Antony, no creo que sea un problema de comunicaciones porque, como te digo, el LCD viene soldado a un shield de arduino. Las patillas del shield ( macho) coinciden con las hembra del arduino sin posibilidad de error. Además a conectar el LCD a una fuente de alimentación externa de 5 V sin conectarlo al arduino, también pasa lo mismo (lucen todos los cuadros de la fina de arriba).
Posiblemente el LCD tenga algún defecto de fabricación y eso sea lo que le pasa.
¿Qué opinas? Muchas gracias por tus comentarios
Creo que a la hora que creé este post invertí una de las posiciones de los pines con los que generalmente trabaja una pantalla LCD. Has intentado usar alguno de los ejemplos de Arduino IDE?
Como no era posible un error en la conexión física porque estoy trabajando con el shield para LCD, la única posibilidad de error en los pines estaba en la sentencia Liquidcristallcd(12,11,5,4,3,2). Buscando ejemplos en internet vi uno que variaba los pines que se indican en dicha sentencia y, con estos nuevos valores, funciona perfectamente con todos los programas ejemplo que he probado (y con la misma librería).
Gracias por todo
Hola Rafa, tengo exactamente el mismo problema que tenías vos. Con que nuevos valores te funciono?
Gracias.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Alvaro, prueba con los siguientes valores en la sentencia: liquid cristal lcd (8, 9, 4, 5, 6, 7). La librería es la misma (liquidcrystral.h).
A mi me funciono. Una vez conectado juega con el potenciómetro hasta conseguir una perfecta visualización de los datos.
Utiliza un programa sencillo (por ejemplo el que lo unico que hace es visualizar en la pantalla «hello world») para asegurarte de que el problema no esta en lo que se envía al lcd sino que está en el propio lcd. Una vez solucionado ya puedes complicar las cosas con mensajes que aparecen o no en función de otros parámetros, con movimiento en la pantalla, con parpadeo, etc, etc.
Espero que te funcione.
(12, 11, 5, 4, 3, 2) son los que están en todos lados. Lo que entiendo del comentario de Rafa es que probó con otra combinación y funcionó… Igual estoy seguro que tendría que funcionar con (12, 11, 5, 4, 3, 2), estoy mirando la documentación original del lcd y son esos valores! no hay otra.
Lo que NO tengo ahora es un potenciómetro de 10 Kohms y estoy utilizando uno de 5 Kohms; puede ser por esto que me pasa exactamente los mismo que decribia Rafa?
Creo que el pot de 5K debe funcionar bien. Solo debes buscar el punto donde la resolución es la mejor. Prueba subiendo algún mensaje y moviendo el pot para ver donde te sale el mensaje. SI no te funciona procura conseguir un pot de 10K o poner el de 5K en serie con el pot. Puede que funcione
Encontré el problema… era un cable cortado, mal yo! El que conectaba el D06 con el pin 3 de la Arduino. El cable era nuevo! había probado todo menos eso, mientras desarmaba me dio por testear los cables ja. Nota aparte: funcionó con el pot de 5K.
Gracias por todo.
All right
Hola buenas noches
Compre un display lcd e hice todo el montaje pero cuando lo inicio solo se enciende la retroalimentacion y los cuadritos pero no me sale ningun texto.. Que puede ser?? No sé si mi display es compatible HD44780, pero es igual al que utilizaste en este..
Espero que me puedas ayudar.
has intentado regular el contraste con el potenciometro?.
Siii, pero solo me sale la primera fila con los cuadritos el espacio para cada carecter, pero no me muestra nada.. Mira como lo tengo
http://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-ash4/1379451_10201840611029606_832304254_n.jpg
Espero que me puedas ayudar es suma importancia para mi
Gracias !!!
Lamento no poder haber contestado antes. Estuve hospitalizado un par de días. Creo que debes revisar las conexiones. Por algún lugar hay algo mal conectado. Sino intenta usar el código que viene con Arduino en los ejemplos de liquid crystal.
Hola con me sirve un potenciometro de 1k
Puede que si. Habría que probar para ver. Haga el ensayo y nos notifica cómo le fue
me siirvioo muchiisiimo muchas graciiasss muyyy biien explicadooo….
A la orden
Es una de las mejores explicaciones encontradas sobre el tema. Felicitaciones y muchas gracias.