Uso de Pantalla LCD con Arduino

25
67004

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.

2013-01-29-142

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.

6708_235836356531592_815315004_n

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:

Lcd_0

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:

lcd_schem

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.

Arduino1

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.

2013-02-06-204
2013-02-06-205
2013-02-06-206 2013-02-06-209

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.

2013-02-06-210

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.

2013-02-06-211

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.

2013-02-08-219 2013-02-08-220

Una vez hecho esto podemos subir el código de Hello World a Arduino o ver los resultados.

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!

0 0 votes
Article Rating
Suscríbete
Notify of
guest

25 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
Javier Alvarez
Javier Alvarez
6 years ago

Es una de las mejores explicaciones encontradas sobre el tema. Felicitaciones y muchas gracias.

Stephanie Mendoza
Stephanie Mendoza
8 years ago

me siirvioo muchiisiimo muchas graciiasss muyyy biien explicadooo….

Antony García González
Antony García González
8 years ago

A la orden

Fabio arias
Fabio arias
10 years ago

Hola con me sirve un potenciometro de 1k

Yebrail Andres
Yebrail Andres
10 years ago

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.

Yebrail Andres
Yebrail Andres
10 years ago

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

Yebrail Andres
Yebrail Andres
10 years ago

Espero que me puedas ayudar es suma importancia para mi

Gracias !!!

Alvaro
Alvaro
10 years ago

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.

antonygarciagonzalez
10 years ago
Reply to  Alvaro

All right

Alvaro
Alvaro
10 years ago

(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?

antonygarciagonzalez
10 years ago
Reply to  Alvaro

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

Alvaro
Alvaro
10 years ago

Hola Rafa, tengo exactamente el mismo problema que tenías vos. Con que nuevos valores te funciono?
Gracias.

antonygarciagonzalez
10 years ago
Reply to  Alvaro

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

rafa
rafa
10 years ago
Reply to  Alvaro

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… Read more »

Rafa
Rafa
10 years ago

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

antonygarciagonzalez
10 years ago
Reply to  Rafa

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?

Rafa
Rafa
10 years ago

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

Rafa
Rafa
10 years ago

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?

antonygarciagonzalez
10 years ago
Reply to  Rafa

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

Rafa
Rafa
10 years ago

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… Read more »

antonygarciagonzalez
10 years ago
Reply to  Rafa

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

Juaneke
Juaneke
10 years ago
Reply to  Rafa

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!