Proyecto Arduino Display I2C-LCD con Biblioteca

Anuncio
Proyecto Arduino Display I2C-LCD
con Biblioteca de Malpartida
[multilanguage_switcher] Cuando queramos conectar un display LCD a nuestro
proyecto Arduino, una solución inteligente es usar un adaptador I2C-LCD. En este
caso usamos el módulo de interface serial FC-113 IIC/I2C para los displays 1602 o
2004. Esto disminuye la cantidad de pins utilizados en la placa Arduino y dejará
lugar para otros sensores y actuadores. La conexión entre la pantalla LCD y el
módulo I2C serie es muy fácil. Simplemente se conecta el pin n del LCD al pin n
del módulo serie para todos los 16 pines(1-1, 2-2, etc.) , como se muestra en la
foto. Si su placa no tiene los números en las patas/pines, por lo general el pin 1
está marcado de alguna manera diferente (un cuadro en vez de un círculo, o
marca rellena), y a partir de este conocemos el orden. Le sugiero soldar un
conector hembra (female pin header) de una sola fila de 16 pines en el circuito
del LCD para que se pueda conectar al conector macho del controlador serie. Si
este no tiene uno, se puede soldar un conector macho al controlador serial. Si va
a experimentar, conectando los componentes en formas diferentes, no trate de
soldar los componentes directamente. Soldar y desoldar produce calentamiento
del circuito impreso (PCB - Printed Circuit Board) y sus componentes, y causa
daños y mal funcionamiento a estos. Enchufe el controlador de la pantalla LCD de
la siguiente manera:
[caption
id="attachment_20"
align="alignnone"
width="841"]
LCD 1602 y 2004 con interface I2C[/caption]
Observe que no hay diferencia en la conexión entre los displays LCD, ya sea con
1602 (16 caracteres por 2 líneas) o con 2004 (20 caracteres por 4 líneas). El
controlador serial dispone de 4 pines para conectar a la placa Arduino. Estos son
+ Vcc, -Gnd, SDA y SLC. Puede que resulte más fácil si se obtiene un conector
hembra de 4 pines para cable y se sueldan los cables allí. Es posible usar estos
cables con conector para otros proyectos más adelante si lo desea. La conexión es
así. + Vcc se conecta a cualquier pin conector hembra + 5v, -Gnd a un
conector GND, SDA y SLC a sus respectivos conectores en la placa Arduino.
Tenga en cuenta que algunas tarjetas pueden no tener SDA y SLC marcados. En
este caso hay que comprobar qué cabezales de pin de su tarjeta se utilizan para la
comunicación I2C. En Arduino UNO generalmente A5 y A4 son SLC y SDA
respectivamente. En Arduino Uno Rev. 3 el pin 16 es SDA y SCL es el pin 17.
Algunas versiones de placa pueden tenerlos marcados, otras no. En Arduino Mega
2560, SDA es 20 y SLC es 21. La comunicación I2C o IIC o I²C es un modelo de
interconexión de componentes. Permite que hasta 128 componentes compartan
un sencillo bus serie de 2 líneas (SDA de datos y SLC de reloj). Debe comprobar
las especificaciones del componente que se está conectando, debido a que ambas
líneas necesitan una resistencia pull-up (una resistencia conectada a + Vcc) con el
fin de conseguir un nivel alto en el caso de todos los componentes estén en estado
"desconectado" del bus. En este caso, las resistencias están incluidas en la placa.
Ver: https://es.wikipedia.org/wiki/I%C2%B2C El controlador serie permite apagar
la luz de fondo si se quita el puente de un extremo. También se puede
activar/desactivar la luz de fondo a través de software, pero no es posible
encenderlo si se quita este puente. También hay un led, cerca del puente, que
muestra si la placa I2C tiene energía. Hay un potenciómetro con el que se puede
ajustar el contraste de la pantalla LCD. Intente girarlo mientras lo tiene en
funcionamiento para ajustar el contraste hasta que esté clara la pantalla. Sólo
tiene que conectar su LCD y el controlador de serie de esta manera:
[caption
id="attachment_17"
align="alignnone"
width="1002"]
I2C-LCD-Project[/caption]
Se necesita la biblioteca I2C LCD. Puede descargar la biblioteca de Malpartida de
su sitio. https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads y
descargar la última versión estable. NewliquidCrystal_1.3.4.zip en nuestro caso.
Simplemente descomprima el archivo en una nueva carpeta dentro del
directorio/carpeta de bibliotecas de Arduino. Ahora puede utilizar esta biblioteca
en el entorno IDE Arduino. El controlador de serie también tiene 3 contactos en el
PCB, por lo general llamados A0, A1 y A2. Estos son los bits menos significativos
de la dirección I2C del controlador en serie. Si estas conexiones se ponen en
cortocircuito, la dirección del componente va a cambiar, y estos bits se ponen a
cero. Están a uno por defecto. Mi componente tiene dirección 0x3F. Por lo que se
podría llevar desde 0x38 a 0x3F. Pero el suyo puede tener una dirección
diferente. En ese caso se debe ejecutar un escáner de direcciones para I2C para
saber cual es si no viene especificada. Cree un sketch de Arduino, se puede
nombrar algo así como "i2c_scanner" y se guarda con el siguiente código:
//Written by Nick Gammon
// Date: 20th April 2011
//http://www.instructables.com/id/I2C-LCD-Controller-the-easy
-way/
#include <Wire.h>
void setup() {
Serial.begin (9600);
// Leonardo: wait for serial port to connect
while (!Serial)
{
}
Serial.println ();
Serial.println ("I2C scanner. Scanning ...");
byte count = 0;
Wire.begin();
for (byte i = 1; i < 120; i++)
{
Wire.beginTransmission (i);
if (Wire.endTransmission () == 0)
{
Serial.print ("Found address: ");
Serial.print (i, DEC);
Serial.print (" (0x");
Serial.print (i, HEX);
Serial.println (")");
count++;
delay (1); // maybe unneeded?
} // end of good response
} // end of for loop
Serial.println ("Done.");
Serial.print ("Found ");
Serial.print (count, DEC);
Serial.println (" device(s).");
} // end of setup
void loop() {}
Corra este programa en su Arduino y le dirá la dirección en que está configurado
su componente LCD-I2C. Debe poner el monitor serial para poder ver la
respuesta.
I2C scanner. Scanning ...
Found address: 63 (0x3F) //la dirección puede variar
Done.
Found 1 device(s). //Se asume que hay un único dispositivo
conectado al bus
Luego de esto puede correr una demostración del funcionamiento de la biblioteca
para su display LCD.
/*
* Demo de Modulo Adaptador Serial I2C/IIC LCD
*/
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
// 0x3F es la direccion de mi modulo
// si obtiene otra dirección cambie aqui
#define I2C_ADDR 0x3F
//Descripcion de pines del LCD 2004A y 1602A
LiquidCrystal_I2C lcd(I2C_ADDR,2,1,0,4,5,6,7);
// El pin 13 tiene un LED conectado en la mayoria de las
placas Arduino.
// Le damos un nombre
int led = 13;
void setup()
{
// Se debe inicializar la biblioteca con el tamaño del
display antes de usarla
// Elija/descomente la linea de su modelo
// lcd.begin(20, 4);//20 columns 4 rows for 2004A
lcd.begin(16, 2);//16 columns 2 rows for 1602A
lcd.setBacklightPin(3,POSITIVE);
//lcd.setBacklight(HIGH); // luz encendida. Se puede apagar
y encender la luz de fondo del display
lcd.setBacklight(LOW); //luz apagada
lcd.clear(); // limpiar la pantalla y poner el cursor en
(0,0)
// inicializar el pin 13 como salida
// no funcionará si eso
pinMode(led, OUTPUT);
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("Enrique Latorres");
lcd.setCursor(0,1);
lcd.print("I2C Module Demo");
// descomentar si se usa 2004A
// lcd.setCursor(0,2);
// lcd.print("third line 123456");
// lcd.setCursor(0,3);
// lcd.print("fourth line ASDF");
digitalWrite(led, HIGH); // encendemos el led
lcd.setBacklight(LOW); // apagamos la luz de fondo
delay(1000); // esperamos un segundo
digitalWrite(led, LOW); // apagamos el led
lcd.setBacklight(HIGH); //encendemos la luz de fondo
delay(1000); // esperamos otro segundo
}
Ahora debiera tener un display destellante con el mensaje que haya puesto en el
código. También el led del pin 13 debe estar destellando opuesto al display.
Se puede ver funcionando en: https://youtu.be/cXdtl3aOslg
Saludos y que disfruten.
Descargar