Páginas

sábado, 26 de enero de 2013

Pantallas LCD Arduino


 



 

  

 

 

 

 

 Pantallas LCD


Las pantallas LCD son una solución muy interesante para hacer autónomo al Arduino, ya que permite que el Arduino pueda mostrar datos, errores, mensajes, etc ... sin necesidad de tenerlo conectado por el USB al Ordenador.

Es una forma muy económica y simple. En el mercado existen de dos tipos, las gráficas GLCD y las de caracteres LCD. Las gráficas nos dan mucha libertad a la hora de trabajar con ella, de forma que no sólo podemos motrar mensajes de texto si no también dibujos y gráficos. Pero esta libertad tiene un precio muy alto a mi entender y es que la cantidad de cables que hay que utilizar para conectar la pantalla al Arduino es exagerada.

Aquí os dejo por ejemplo el esquema de conexión de una GLCD con un Arduino Uno.


Con el Arduino Mega sería:


Quedando montado sobre un Arduino Mega así:



Para trabajar con estas pantallas necesitas la librería "glcd.h" puedes descargarla aquí. Con la librería vienen algunos ejemplos.

Por otro lado tenemos las pantallas de texto LCD que nos limitan a mostrar caracteres y poco más pero que la conexión con el Arduino es muy sencilla. Sobretodo porque podemos utilizar el bus IIC o I2C. Para ellos se coloca un pequeño controlador que se pone entre el LCD y el Arduino. Por ser mucho más práctico nos vamos a centrar en las pantallas LCD I2C.

El bus I2C (Inter Integrated Circuit) es un bus de comunicación en serie, utilizado para comunicar circuitos integrados los cuales se encuentran en una misma placa impresa.



Utiliza 4 líneas, la de tierra o masa (GND), la de voltaje (VCC), la de Datos (SDA) y una de señal de reloj (SCL). Como es un bus de comunicación en serie, nos permite utilizar varios dispositivos a la vez. Con este mismo bus se puede conectar el Arduino a un reloj por ejemplo. Que vremos en próximos post.

Así que a una pantalla LCD de líneas como esta:
  

 Le colocamos un pequeño controlador I2C, ya podemos manejar desde el Arduino:

Aquí tambien tenemos que distinguir entre el Arduino Mega y el resto:
 


I2C
Arduino
Arduino Mega
VCC
5V
5V
GND
GND
GND
SCL
A5
D21
SDA
A4
D20


Quedando en un Arduino Uno así:


Una vez conectado tenemos que utilizar las librerías (con Arduino IDE < 1.5):

// LCD IIC/I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

Hay 2 versiones de esta librería, la 1.1 y la 2, las cuales puedes descargar de aquí:

LiquidCrystal_I2C V1.1

LiquidCrystal_I2C V2

Una nos permite utilizar varios dispositivos y la otra es específica para LCD.

Ya que lo tenemos conectado, subimos este scketch de ejemplo:

 
// Pantalla LCD 20x4 I2C
// Conectamos el sensor de la siguiente forma:  
// GND -> GND  
// VCC -> 5V  
// SCL -> A5
// SDA -> A4
// UNO pin 4 y 5 MEGA 20 y 21 
// http://arubia45.blogspot.com.es/  
  
// Librerias necesarias  
#include "Wire.h"
#include "LiquidCrystal_I2C.h"

// Definición del tipo de LCD
// 20 caracteres por línea y 4 líneas.  
LiquidCrystal_I2C lcd(0x27,20,4); 

//Contador
int i; 

void setup()
{
//Initializar el lcd
  lcd.init();                      
  lcd.backlight();
  lcd.home();
  lcd.print("Hola Mundo");
  delay (3000);
}

void loop() {
   lcd.clear();
   lcd.print("  Arduino de ALRO");
   // Posicionar en la pantalla (caracter,linea)
   lcd.setCursor(5,2);
   // Con print sin salto de línea
   lcd.print("Contador: ");
   lcd.print(i);
   delay(1000);
   i++;
}



Bajar Ejemplo 


En la nueva versión de Arduino IDE (1.6.7 por ejemplo) esta librería ha dejado de funcionar, hay que utilizar esta otra LiquidCristal_I2C_1.1 en vez de declarar el LCD con la sentencia LiquidCrystal_I2C lcd(0x27, 20,4);  utilizamos esta LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); y en la función setup sustituimos el lcd.init(); por lcd.begin(20,4);


 
Y vemos que el LCD hace una cuenta progresiva.




 

En el mercado hay pantallas de 2 y 4 líneas y su precio es bastante económico. Unos 6€ las de 2 líneas. LCD 16x02 en eBay o por unos 12€ las de 4 líneas. LCD 20x04 en eBay.

Para las pantallas GLCD he visto que están empezando a comercializar controladores para Arduino parecidos al de I2C pero con algunos pins más. Yo aún no los he probado pero si lo hago lo comentaré.



3 comentarios: