4 feb. 2015

MANEJO DEL DISPLAY LCD 1602 I2C

En esta práctica vamos a aprender a utilizar las principales funciones de la libreria que maneja el display LCD. Entre ellas, veremos cómo mostrar un texto en cualquier posición del display, cómo mostrar un mensaje flasheando, cómo desplazar un texto por la pantalla, etc.

Lo primero que debemos decir es que vamos a emplear un LCD cuya comunicación con ARDUINO será serie (protocolo I2C) en lugar de ser paralelo. Esto tiene la ventaja de que nos ocupará menos pines de nuestra placa, con lo que los podremos utilizar para otras funciones.
I²C (también lo verás escrito como I2C) es un bus de comunicaciones en serie que utiliza dos líneas para transmitir la información: una para los datos y por otra la señal de reloj. Como suelen comunicarse circuitos en una misma placa que comparten una misma masa, esta tercera línea no suele ser necesaria. En la mayoría de las placas Arduino, SDA (línea de datos) está en el pin analógico 4, y SCL (línea de reloj) está en el pin analógico 5. En Arduino Mega, SDA está en el pin digital 20 y SCL en el 21. Con el protocolo I2C podemos ampliar nuestro numero de entradas digitales e incluso comunicar varios arduinos entre sí. Usando nuestro LCD por I2C también ahorraremos muchos pines.

Arduino tiene de serie una librería para la comunicación sobre este protocolo. Esta es la librería ( Wire.h ).- Pincha aquí para descargarla.
Al trabajar con esta comunicación I2C, debemos importar una nueva librería ( LiquidCrystal_I2C.h ), que podéis descargar pinchando aquí.

Debes descomprimir cada archivo.zip, y copiar cada carpeta correspondiente dentro de  la carpeta libraries de la carpeta Arduino donde lo tengas instalado en tu PC.


El esquema de conexión es muy fácil. Simplemente conectando los pines de la placa a los pines correspondientes del LCD, el SDA al pin A4 del arduino UNO (pin 20 Mega), el SCL al pin A5 arduino UNO (21 Mega), la masa y el power.

MATERIAL NECESARIO


1 – Tarjeta ARDUINO UNO
1 – Cable USB para Arduino
1 – Placa Protoboard
1 – Display LCD 1602 I2C
4 - Conectores macho-hembra

CONEXIONADO EN PLACA PROTOBOARD

CÓDIGO
 #include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

int x = 200;
int y = 300;
//creamos el objeto display LCD I2C
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity

void setup()
{
lcd.begin(16,2);    //inicializamos el display como de 16 columnas y 2 filas
//lcd.backlight();
lcd.setCursor(0, 0);        //Nos posiscionamos en la columna 0 fila 0
lcd.print("primera fila");   //mostramos un texto
lcd.setCursor(0, 1);        //Nos posicionamos en la columna 0 fila 1
lcd.print("segunda fila");  //mostramos un texto
delay (3000);               //esperamos 3 segundos
lcd.clear();               //limpio el display

lcd.setCursor(10, 0);        //Nos posiscionamos en la columna 10 fila 0
lcd.print("HOLA");          //mostramos un texto
lcd.setCursor(10, 1);        //Nos posicionamos en la columna 10 fila 1
lcd.print("ADIOS");          //mostramos un texto
delay (3000);               //espero 3 segundos
lcd.clear();               //limpio el display

lcd.setCursor(0, 0);        //Nos posiscionamos en la columna 0 fila 0
for(int x=0; x<10;x++)    //mostramos un contador de 0 a 9 con una variable
{
  lcd.print(x);
  delay(500);
  lcd.clear();               //limpio el display
}

for(int x=0; x<10;x++)    //mostramos un texto flasheando
{
  lcd.print("nosinmiarduino");   //mostramos un texto
  delay(300);
  lcd.clear();               //limpio el display
  delay(300);
}

lcd.print("     arduino    ");   //mostramos un texto

for(int x=0; x<5;x++)    //mostramos un texto flasheando
{
   lcd.scrollDisplayLeft();
  delay(300);

}

for(int x=0; x<9;x++)    //mostramos un texto flasheando
{
   lcd.scrollDisplayRight();
  delay(300);

}
lcd.clear();
lcd.print("     ARDUINO    ");   //mostramos un texto
}
void loop()
{
  //crfeamos una animación de un texto desplazandose por la pantalla
lcd.print("     ARDUINO    ");
delay(x);
lcd.clear();
delay(y);
lcd.print("      ARDUINO   ");
delay(x);
lcd.clear();
delay(y);
lcd.print("       ARDUINO  ");
delay(x);
lcd.clear();
delay(y);
lcd.print("        ARDUINO ");
delay(x);
lcd.clear();
delay(y);
lcd.print("         ARDUINO");
delay(x);
lcd.clear();
delay(y);
lcd.print("          ARDUIN");
delay(x);
lcd.clear();
delay(y);
lcd.print("           ARDUI");
delay(x);
lcd.clear();
delay(y);
lcd.print("            ARDU");
delay(x);
lcd.clear();
delay(y);
lcd.print("             ARD");
delay(x);
lcd.clear();
delay(y);
lcd.print("              AR");
delay(x);
lcd.clear();
delay(y);
lcd.print("               A");
delay(x);
lcd.clear();
delay(y);
lcd.print("                ");
delay(x);
lcd.clear();
delay(y);
lcd.print("O               ");
delay(x);
lcd.clear();
delay(y);
lcd.print("NO              ");
delay(x);
lcd.clear();
delay(y);
lcd.print("INO             ");
delay(x);
lcd.clear();
delay(y);
lcd.print("UINO            ");
delay(x);
lcd.clear();
delay(y);
lcd.print("DUINO           ");
delay(x);
lcd.clear();
delay(y);
lcd.print("RDUINO          ");
delay(x);
lcd.clear();
delay(y);
lcd.print("ARDUINO         ");
delay(x);
lcd.clear();
delay(y);
lcd.print(" ARDUINO        ");
delay(x);
lcd.clear();
delay(y);
lcd.print("  ARDUINO       ");
delay(x);
lcd.clear();
delay(y);
lcd.print("   ARDUINO      ");
delay(x);
lcd.clear();
delay(y);
lcd.print("    ARDUINO     ");
delay(x);
lcd.clear();
delay(y);
}

No hay comentarios:

Publicar un comentario