9 nov 2014

MANEJO DE UN DISPLAY LCD 1602 CON ARDUINO

Con esta práctica vamos a aprender a manejar y mostrar información por un display LCD 1602A a ARDUINO.
Para ello lo primero que vamos a hacer es familiarizarnos con el display LCD (sus patillas y la funcionalidad de cada una).


  • VSS que es el pin de negativo o masa o 0 volts o GND.
  • VDD es la alimentación principal de la pantalla y el chip, lleva 5 voltios (recomendable ponerle en serie una resistencia para evitar daños, con una de 220 ohmnios es suficiente).
  • VE es el contraste de la pantalla, debe conectarse con un potenciometro de unos 10k ohms o una resistencia fija una vez que encontremos el valor deseado de contraste. Tengan en cuenta que si no conectan esto, no verán nada.
  • RS es el selector de registro (el microcontrolador le comunica a la LCD si quiere mostrar caracteres o si lo que quiere es enviar comandos de control, como cambiar posición del cursor o borrar la pantalla, por ejemplo).
  • R/W es el pin que comanda la lectura/escritura. En nuestro caso siempre estará en 0 (conectado a GND) para que escriba en todo momento.
  • E es enable, habilita la pantalla para recibir información.
  • Data0~Data3 no los vamos a utilizar. Como pueden ver la pantalla tiene un bus de datos de 8 bits, de Data0 a Data7. Nosotros solamente utilizaremos 4 bits, de Data4 a Data7, que nos servirán para establecer las líneas de comunicación por donde se transfieren los datos.
  • A(Backlight anode) y K(Backlight cathode) son los pines del led de la luz de fondo de la pantalla. A se conectará a 4 o 5 volts y K a GND.

MATERIAL NECESARIO

1 – Tarjeta ARDUINO UNO
1 – Cable USB para Arduino
1 – Placa Protoboard
1 – Display LCD 1602
1 – Potenciómetro de 10kΩ
1 – Cables
1 – Resistencia de 220Ω


CONEXIONADO EN PLACA PROTOBOARD

pin 1 de la LCD (VSS) ---> a GND
pin 2 de la LCD (VDD)---> a +Vcc
pin 15 de la LCD (A)---> a +Vcc
pin 16 de la LCD (K)---> a GND
primer pin del potenciómetro---> GND
pin de en medio potenciómetro --> pin 3 de la pantalla LCD (VO)
tercer pin del potenciómetro---> +Vcc
pin 4 de la LCD (RS)---> pin 12 del arduino (salida digital, PWM)
pin 5 de la LCD (RW) --> GND
pin 6 de la LCD (E)--> pin 11 de la placa Arduino UNO (PWM)
pin 11 de la LCD (D4)--> pin 5 de la placa Arduino UNO (PWM)
pin 12 de la LCD (D5)--> pin 4 de la placa Arduino UNO (PWM)
pin 13 de la LCD (D6)--> pin 3 de la placa Arduino UNO (PWM)
pin 14 de la LCD (D7)--> pin 2 de la placa Arduino UNO (PWM)



Una vez conectado todo correctamente, debemos escribir el código para mostrar la información por la pantalla. Para ello debemos familiarizarnos con la librería específica "LiquidCrystal.h". En ella están todas las funciones correspondientes al manejo del LCD (mostrar un carácter, mostrar un texto, borrar la pantalla, desplazar un texto, definir el cursor de comienzo, etc). 
Si queréis podéis ver todas las funciones de la librería con ejemplos en el siguiente enlace.
En este primer ejemplo vamos a hacer que aparezcan dos textos en el display (uno fijo en la primera fila y una cuenta atrás en la segunda fila)


CÓDIGO 1

// incluye la librería del display
#include <LiquidCrystal.h>

// se crea el objeto lcd y se definen los pines que intervendrán
// en la comunicación
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
// se define el tamaño del display (16 columnos y 2 filas)
lcd.begin(16, 2);
lcd.clear();// se limpia el display
}

void loop()
{
for (int cont= 10; cont >=0; cont--)
{
lcd.setCursor(0,0); //nos situamos en la fila 0 columna 0
lcd.clear(); //se limpia el display
lcd.print("ARDUINO"); //mostramos el texto fijo

lcd.setCursor(0,1); //nos situamos en la fila 1 columna 0
lcd.print(cont); //se muestra la variable del contador
delay(800); //incluimos un retardo para que sea visible al ojo humano
}

}



Y en este otro ejemplo mostramos el texto "HOLA" por la pantalla de forma automática:

CÓDIGO 2

// incluye la librería del display
#include <LiquidCrystal.h>

// se crea el objeto lcd y se definen los pines que intervendrán
// en la comunicación
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() 
{
// se define el tamaño del display (16 columnos y 2 filas)
  lcd.begin(16, 2);
}

void loop() 
{
lcd.clear();
lcd.setCursor(0,0); //nos posicionamos arriba a la izquierda
lcd.print("HOLA");//escribimos el primer "HOLA"
delay(800);

//Este bucle desplaza el texto a lo largo de la pantalla
for (int mover= 0; mover <15; mover++)
{
lcd.scrollDisplayRight();//desplaza el texto un espacio a la derecha
delay(800);//retardo para que se pueda ver
}

}

No hay comentarios:

Publicar un comentario