viernes, 27 de diciembre de 2013

Arduino Display I2C parte 2

El ejemplo anterior no esta muy comentado, por eso lo voy a ir comentado paso a paso. He echo unas modificaciones en el codigo para poder insertar dos lineas de texto:

Código:
/*
Autor: Aitor Martin
Fecha: 27-12-2013
Titulo: 006 Display I2C Hola Mundo
Placa: Arduino uno
Post: http://aitormartin-apuntes.blogspot.com.es/2013/12/arduino-display-i2c-parte-2.html 

Código de dominio publico. Se puede distribuir y modificar  libremente, 
siempre y cuando se mencione al autor y se proporcione un enlace a su web.

Basado en un ejemplo de esta URL: 
http://blog.gotencool.com/2012/03/arduino-lcd-via-i2c.html?showComment=1388141296472
*/
#include <Wire.h>
  
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27,16,2); // 0x27 es la direccion del LCD 16x2
 
void setup(){
    lcd.init();
    lcd.backlight(); //enciende la iluminacion
    lcd.setCursor(0, 0);
    lcd.print("Hola mundo desde");
    lcd.setCursor(5, 1);
    lcd.print("el I2C");
}
 
void loop(){
    delay(1000);
}


Primero definimos las librerias que vamos a utilizar. La primera, Wire.h se encarga de manejar el bus I2C, y la otra libreria la LiquidCrystal_I2C.h se encarga de controlarnos el display I2C.

Código:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>


A cada bus I2C se le pueden conectar 128 dispositivos. Eso no quiere decir que se puedan conectar 128 dispositivos iguales, ya que algunos fabricantes nos limitan en número de dispositivos iguales que se pueden conectar a un mismo bus I2C. Cada dispositivo tiene un código o dirección que lo disferencia respecto al resto como en este caso:

Código:
LiquidCrystal_I2C lcd(0x27,16,2); // 0x27 es la direccion del LCD 16x2

Cuando compramos una placa ya montada con su dispositivo I2C, normamente esa pcb tiene unos jumpers o puentes soldables en la PCB para que nostros personalicemos la dirección de nuestro dispositivo.

El siguente paso es activar el LCD:

Código:
    lcd.init();
    lcd.backlight(); //enciende la iluminacion
    lcd.setCursor(0, 0);
    lcd.print("Hola mundo desde");
    lcd.setCursor(5, 1);
    lcd.print("el I2C");

Con  lcd.init(); inicializamos el diplay.

lcd.backlight();  enciende la iluminación.

lcd.setCursor(0, 0); Pone el cursor en la primera columna (1 de 16) y en la primiera dila (1 de 2).

Ahora escribiremos un texto con lcd.print("Hola mundo desde");

El resto de código es igual, solo que escribe un texto en la fila de abajo del display.
 
lcd.setCursor(5, 1);
lcd.print("el I2C");


En el foro de donde he sacado la informacion del display, en uno de los comentarios una persona preguntaba para que se utilizan las resistencias de pul-up, y la respuesta es la siguiente:

Respuesta:
En el bus I2C es importante colocar una resistencia de pull-up a cada 
linea, tanto a la SDA como a la SCL, porque son con estas resistencias 
precisamente las que le marcan la velocidad de transmisión al bus.
 
Prueba con resistencias pull-up de 4K7 que suele ser un valor bastante 
estándar, pero recuerda que dependiendo de la velocidad hay que subir o 
bajar el valor de estas pull-ups.
 

Microchip en este documento:
http://ww1.microchip.com/downloads/en/DeviceDoc/i2c.pdf 
Microchip aconseja:
4K7 < 100kbps 2K2 > 100kps 1K > 400Kbps
Fuente: http://www.foroselectronica.es/f65/configuracion-sda-scl-i2c-1298.html 



No hay comentarios:

Publicar un comentario