Inicio Arduino Arduino para principiantes Uso de Pantalla LCD con Arduino

Uso de Pantalla LCD con Arduino

24
10541
Una pantalla LCD son dispositivos diseñados para mostrar información en forma gráfica. LCD significa Liquid Crystal Display (Display de cristal líquido). La mayoría de las pantallas LCD vienen unidas a una placa de circuito y poseen pines de entrada/salida de datos. Como se podrán imaginar, Arduino es capaz de utilizar las pantallas LCD para desplegar datos.

 

Es extremadamente sencillo enviarle datos al circuito integrado de una pantalla LCD desde Arduino gracias a la librería LiquidCrystal que viene junto con Arduino IDE.

Pero, antes de pasar a la programación veamos un poco más del hardware que utiliza una pantalla LCD.

Recientemente traje 2 display LCD de 2 filas por 16 columnas. Esto quiere decir que podemos imprimir caracteres en 2 filas, en las cuales caben 16 caracteres.

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.

El video no me quedó con buena calidad, sin embargo el usuario es capaz de darse cuenta de como debe verse el resultado. Si el LCD no despliega información, pruebe con ajustar el potenciómetro (o trimmer) hasta hallar el contraste apropiado.

Espero sus comentarios.

  • Stephanie Mendoza

    me siirvioo muchiisiimo muchas graciiasss muyyy biien explicadooo….

    • Antony García González

      A la orden

  • Fabio arias

    Hola con me sirve un potenciometro de 1k

    • [email protected]

      Puede que si. Habría que probar para ver. Haga el ensayo y nos notifica cómo le fue

  • Yebrail Andres

    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.

    • [email protected]

      has intentado regular el contraste con el potenciometro?.

      • Yebrail Andres

        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

        Espero que me puedas ayudar es suma importancia para mi

        Gracias !!!

        • [email protected]

          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.

  • Alvaro

    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.

  • Alvaro

    (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

  • Alvaro

    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);

    • rafa

      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.

  • Rafa

    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?

      • Rafa

        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

    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

      • Rafa

        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

    • Juaneke

      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!