sábado, 12 de septiembre de 2015

[Arduino 09] Conectar pantalla LCD 2x16 (1602A) [Ejemplos]

En este tutorial se muestra como conectar la pantalla LCD 2x16 a una placa arduino UNO (Arduino Pícaro). Esta Pantalla LCD es fácil de programas y solo usa 6 pines del controlador, por lo cual es una buena opción cuando se usan pocas entradas/salidas en tu arduino, ademas tiene unas funciones muy interesantes a las que se le pueden sacar buen partido, como por ejemplo crear caracteres (lo veremos mas adelante), deslizar el texto, entre otras funciones.

Objetivos:
  • Aprender a conectar una pantalla LCD 2x16 (modelo LCD 1602A) a un Arduino UNO
  • Conocer la programación de una pantalla LCD 2x16 implementar en cualquier proyecto con arduino
  • Aprender a usar librerías en Arduino
Materiales
  • Pantalla LCD 2x16 (1602A)
  • Arduino Uno, Arduino Picaro, Similares
  • Cable USB para arduino
  • Protoboard
  • Potenciometro de 50kOhm
  • Cables o conectores
Fotos del proyecto


Pines LCD 2x16
-Pines de alimentación
  • VSS: Pin para conectar la pantalla LCD a tierra (GND
  • VDD: Pin de alimentación principal pantalla LCD (5 Volts)
-Regulación de contraste
  • V0: Pin para regular contraste de la pantalla, se debe conectar al pin central de un potenciómetro de 10kohm, el cual a su vez debe estar conectado por medio de sus pines exteriores a la alimentación y tierra), de manera que al regular el potenciómetro se podrá regular el contraste de la pantalla.
-Pines de control
Estos pines deben ser conectados a pines digitales de la placa arduino.
  • RS: Selector de registro, por medio de este pin la LCD le dice al microcontrolador si lo que se desea hacer es mostrar caracteres o enviar comandos de control (como cambiar la posición del cursor o borrar la pantalla por ejemplo). Cuando RS esta en LOW recibe datos en modo comando y si esta en HIGH, los datos recibidos serán de texto para mostrar en pantalla.
  • RW: Pin de lectura o escritura, sirve para enviar datos al LCD o recibir datos de la LCD. Para enviar datos al LCD RW debe estar en LOW, para recibir datos de la LCD RW debe estar en HIGH; en nuestro caso conectaremos RW a tierra de manera que estará siempre en LOW.
  • E: Enable, es el pin que habilita la pantalla para comenzar a recibir información, sirve para advertir a la LCD que el microcontrolador va a enviar datos (pueden ser de control o información)
-Pines de información
Estos pines se deben conectar a los pines digitales del arduino. Se usan para estableces lineas de comunicación en paralelo por donde se transfieren datos y comandos de control del arduino hacia la LCD. Hay que tomar en cuenta que una LCD de 8 bits puede funcionar perfectamente con solo 4 bits (cables de datos), pero funcionará con una menor velocidad.

Los pines de datos D0, D1,D2 y D3 son opcionales, si se omiten en la programación del arduino solo se utilizarán D4, D5, D6 y D7
  • D0, D1, D2, D3: no serán utilizados para esta configuración de la pantalla, solo se utilizan cuando se trabaja con 8 bits (son opcionales).
  • D4, D5, D6, D7: Solo utilizaremos 4 bits para la comunicación entre la pantalla y el microcontrolador, por lo que usaremos los pines D4, D5, D6 y D7 (son obligatorios).
-Pines para el circuito de luz de fondo
Como todo LED se le debe conectar una resistencia de 220 ohm para regular su corriente, no necesariamente tiene que ser una resistencia de ese valor puede ser menor,pero esto dependerá siempre de la corriente máxima que pueda aguantar el led. (Revisar Ley de Ohm)
  • A: pin de la luz del fondo de la pantalla (anodo), se conecta 4 o 5V
  • K: pin de la luz del fondo de la pantalla (catodo), se conecta a GND
Circuito Arduino - Pantalla LCD (Fritzing)
Lo primero que deben conectar son los cables azul, rojo y morado que se ven en la imagen, finalmente conectan los cables de color naranjo y con eso esta lista para la programación.

Primero debemos conectar los pines de alimentación de la pantalla LCD para probar si la pantalla enciende correctamente.
  • VSS   ---->GND
  • VDD  ---->5V
  • A      ---->5V
  • K      ---->GND
 
Ahora conectamos el circuito a los 5V del Arduino y también el GND, si se enciende la pantalla entonces vamos bien :)
  • 5V (Arduino)----->protoboard (+)
  • GND (Arduino)-->protoboard  (-)
 Seguido de esto regulamos el contraste de la pantalla por medio de un potenciómetro de 10kohm
  • Pin 1 potenciometro (izquierda) ---> 5V
  • Pin 2 potenciometro (centro)      ---> V0 (Pantalla LCD)
  • Pin 3 potenciometro (derecha)   ---> GND
 Ahora conectamos los pines:
  • Pantalla LCD RS  --> Pin 7 Arduino
  • Pantalla LCD RW--> GND
  • Pantalla LCD E    --> Pin 8 Arduino
 
 Finalmente solo nos resta conectar los pines de información D4, D5, D6 y D7
  • D4-->Pin 9 Arduino
  • D5-->Pin 10 Arduino
  • D6-->Pin 11 Arduino
  • D7-->Pin 12 Arduino 
Código de ejemplo
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);

void setup() { 
  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  lcd.write("Seba Electronic");
  lcd.setCursor(6,1);
  lcd.write("Labs");
}

void loop() { }

Librería LiquidCrystal
Esta es una librería oficial de Arduino por lo que todas las versiones de Arduino IDE la tienen en su software. Para poder utilizarla solo basta con llamarla en el sketch con el comando #include
  • #include <LiquidCrystal.h>
Para poder utilizarla tenemos que declarar una variable global con el nombre LiquidCrystal, la cual en el skecth representa el objeto LCD. En nuestro caso, a esta variable-objeto la llamaremos "lcd".
  • LiquidCrystal lcd(RS,RW,ENABLE,D1,D2,D3,D4,D5,D6,D7);
  • RS: numero de pin de arduino se conecta al pin RS de la pantalla LCD
  • RW: numero de pin de arduino se conecta al pin RW de la pantalla LCD
  • ENABLE: numero de pin de arduino se conecta al pin ENABLE (E) de la pantalla LCD
  • D0...D7: numero de los pines de arduino que van conectados a los pines correspondientes de la pantalla LCD (D0...D7)
En nuestro caso usaremos 4 bits (solo los pines D4, D5, D6 y D7) y tampoco se utilizará RW (conectado a GND), de modo que la configuracion será:
  • LiquidCrystal lcd(RS,ENABLE,D4,D5,D6,D7);
Un ejemplo de configuración es el siguiente, donde se usan 4 bits y no se utiliza RW. 
  • LiquidCrystal lcd(7,8,9,10,11,12);
  • Pin 7: Pin 7 de arduino se conecta a RS de la pantalla LCD
  • Pin 8: Pin 8 de arduino se conecta a ENABLE de la pantalla LCD
  • Pin 9: Pin 9 de arduino se conecta a D4 de la pantalla LCD
  • Pin 10: Pin 10 de arduino se conecta a D5 de la pantalla LCD
  • Pin 11: Pin 11 de arduino se conecta a D6 de la pantalla LCD
  • Pin 12: Pin 12 de arduino se conecta a D7 de la pantalla LCD
El que programa la pantalla LCD puede escoger que pines de Arduino utilizar siguiendo el orden que se muestra anteriormente, no necesariamente tiene que ser 7,8,9,10,11,12 como escogí yo en el ejemplo. Otros ejemplos pueden ser los siguientes:
  • LiquidCrystal lcd(12,11,10,9,8,7);
  • LiquidCrystal lcd(8,9,10,11,12,13);
Una vez creado el objeto "lcd" es obligatorio establecer el tamaño de la pantalla para poder trabajar con ella. Esto se hace mediante la siguiente función.
  • lcd.begin(16,2);
Donde el primer numero indica las columnas y el segundo la cantidad de filas de la pantalla LCD
Funciones para controlar la pantalla LCD
Como no quiero hacer mas largo el tutorial dejare esto ultimo, las funciones de la pantalla, para el proximo tutorial ([Librerias Arduino] Libreria LiquidCrystal) donde hablaré de la librería de la pantalla LCD y sus funciones para la programación.
DataSheet


No olvides visitar la pestaña tutoriales arduino, donde podrás encontrar la lista de tutoriales que he hecho hasta el momento. Como siempre muchas gracias por visitar mi blog y si tienen alguna consulta o consejo puede realizarlo por medio de este mismo blog.

11 comentarios:

  1. Hola, soy nuevo en arduino y tome como base este tutorial para conectar la pantalla LCD a mi arduino uno, segui el esquema de la grafica y funciona de maravillas, pero mi pregunta es la siguiente, quiero omitir el uso del potenciometro, para ello como deberia hacer? colocar una resistencia reemplazando al potenciometro? en caso de ser asi, la resistencia que valor deberia tener? gracias

    ResponderBorrar
    Respuestas
    1. Pues quita el potenciometro cateto. Denada.

      Borrar
    2. menudo hijo de puta maleducado estás hecho no? A ver si aprendes un poco de educación o haznos un favor y muérete. Por cierto no soy el que hizo la pregunta pero me ha dado bastante asco leerte.

      Borrar
    3. tecnicamente no hay nada de malo, solo es un CHISTE!!!!

      Borrar
    4. ola a mi no me jalo si prende el display pero no aparece el mensaje solo puros cuadros....

      Borrar
  2. Excelente ... Muchas gracias !!!

    ResponderBorrar
  3. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    ResponderBorrar