Introduction: Tutorial Divirtiendose Con Una LCD Con I2C

Picture of Tutorial Divirtiendose Con Una LCD Con I2C

En este

tutorial usaremos un módulo adaptador de LCD a I2C para poder controlar nuestro LCD con solo dos pines de nuestro Arduino EL Módulo adaptador LCD a I2C que usaremos está basado en el controlador I2C PCF8574, el cual es un demultiplexor de dos entradas a 8 salidas digitales controlado por I2C, que en este módulo se usa para controlar un LCD.

Step 1: Conociendo El Modulo I2C/ Dirección Del Modulo I2C

Picture of Conociendo El Modulo I2C/ Dirección Del Modulo I2C

La dirección del módulo I2C que viene por defecto es 0x27, pero podemos cambiarlo soldando los puentes A0,A1y A2; quedando la dirección en binario de la siguiente forma :0|0|1|0|0|A2|A1|A0.

Por defecto A0,A2,A1 valen 1 pero si soldamos los puentes, estos se conectan a tierra teniendo un valor 0, por ejemplo si soldamos los tres puentes la dirección seria 0|0|1|0|0|0|0|0 (0x20).

Step 2: Control Del Contraste

Picture of Control Del Contraste

Para controlar el contraste solo necesitamos variar el potenciómetro que se encuentra en el módulo.

La luz de fondo se controla por software, desde el Arduino; pero el modulo tiene un Jumper para desconectar el Led de la luz de fondo. En este caso lo encontramos de color azul.

Step 3: Conexiones Entre Arduino Y Módulo Adaptador LCD a I2C

Picture of Conexiones Entre Arduino Y Módulo Adaptador LCD a I2C

El adaptador LCD a i2C tiene los pines ordenados para solo conectar al LCD, esto lo podemos hacer a través de un protoboard o soldando directamente al LCD, es muy fácil realizarlo.

Step 4: Librería LiquidCrystal_I2C Para Arduino

Existen diferentes tipos y versiones de la librería para LCD I2C, información más completa pueden encontrar en: http://playground.arduino.cc/Code/LCDi2c , nosotros usaremos la librería LiquidCrystal_I2C

Las funciones que utiliza esta librería son similares a la librería LiquidCrystal de Arduino, pero volveremos a explicaremos las funciones principales.

LiquidCrystal_I2C(lcd_Addr, lcd_cols, lcd_rows)

Función constructor, crea una variable de la clase LiquidCrystal_I2C, con dirección, columnas y filas indicadas.

init(); o begin(); Inicializa el modulo adaptador LCD a I2C, esta función internamente configura e inicializa el I2C y el LCD.

clear(); Borra la pantalla LCD y posiciona el cursor en la esquina superior izquierda (posición (0,0)).

setCursor(col, row)Posiciona el cursor del LCD en la posición indicada por col y row(x,y); es decir, establecer la ubicación en la que se mostrará posteriormente texto escrito para la pantalla LCD.

print()Escribe un texto o mensaje en el LCD, su uso es similar a un Serial.print

scrollDisplayLeft()Se desplaza el contenido de la pantalla (texto y el cursor) un espacio hacia la izquierda.

scrollDisplayRight()Se desplaza el contenido de la pantalla (texto y el cursor) un espacio a la derecha.

backlight();Enciende la Luz del Fondo del LCD

noBacklight();Apaga la Luz del Fondo del LCD

createChar (num, datos)Crea un carácter personalizado para su uso en la pantalla LCD. Se admiten hasta ocho caracteres de 5x8 píxeles (numeradas del 0 al 7). Dónde: num es el número de carácter y datos es una matriz que contienen los pixeles del carácter. Se verá un ejemplo de esto más adelante.

Explicado la librería veamos unos ejemplos:

Step 5: 1. Un Hola Mundo Con Arduino Y LCD Con I2C

#include <LiquidCrystal_I2C.h>

#include <wire.h>

//Crear el objeto lcd dirección 0x27 y 16 columnas x 2 filas

LiquidCrystal_I2C lcd(0x27,16,2); //

void setup() {

// Inicializar el LCD

lcd.begin();

//Encender la luz de fondo.

lcd.backlight();

// Escribimos el Mensaje en el LCD.

lcd.print("Hola Mundo");

}

void loop() {

// Ubicamos el cursor en la primera posición(columna:0) de la segunda línea(fila:1)

lcd.setCursor(0, 1);

// Escribimos el número de segundos trascurridos

lcd.print(millis()/1000);

lcd.print(" Segundos");

delay(100);

}

//La programación para un LCD de 20x4, es igual solo hay que modificar en:

LiquidCrystal_I2C lcd(0x27,20,4);

Step 6: 2. Desplazando El Texto En El LCD

//En este ejemplo para

desplazar el texto usaremos la función scrollDisplayLeft(). El codigo es el siguiente:

#include <wire.h>

#include >LiquidCrystal_I2C.h>

//Crear el objeto lcd dirección 0x27 y 16 columnas x 2 filas

LiquidCrystal_I2C lcd(0x27,16,2); //

void setup() {

// Inicializar el LCD

lcd.begin();

//Encender la luz de fondo.

lcd.backlight();

// Escribimos el Mensaje en el LCD en una posición central.

lcd.setCursor(10, 0);

lcd.print("laelectronicacr");

lcd.setCursor(4, 1);

lcd.print("Tutorial LCD, Test de desplazamiento ");

}

void loop() {

//desplazamos una posición a la izquierda

lcd.scrollDisplayLeft();

delay(500);

}

Step 7: 3.Mostrando Datos De Sensores O Variables En El LCD Conectemos Un Potenciometro Y Veamos Un Porcentaje

Picture of 3.Mostrando Datos De Sensores O Variables En El LCD Conectemos Un Potenciometro Y Veamos Un Porcentaje

#include <wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2); //Crear el objeto lcd dirección 0x27 y 16 columnas x 2 filas const int analoginPin = A0; // entrada analogica conectada al potenciometro const int analogOutPin = 9; // salida analogica pwm

int sensorValue = 0; // variable que lee el valor del potenciometro int outputValue = 0;

void setup() { lcd.begin(); // inicio de la pantalla LCD lcd.backlight(); //encendido de la pantalla LCD lcd.home(); //Posiciona el cursor en la esquina superior izquierda del LCD.

// Se ubica estaticamente el texto lcd.setCursor(12, 1); lcd.print("%"); Serial.begin(9600); // monitor serial opcional }

void loop() { // esta parte del programa se repite

int sensorValue = analogRead(analoginPin); // Lea la entrada analogica A0 y guarde el la variable sensorValue float percentValue = sensorValue / 1024.0 * 100.0; // Calcula el porcentaje con el valor de A0 y lo guarda en la variable sensorValue outputValue = map(sensorValue, 0, 1023, 0, 255); // mapeo analogico de la entrada en la salida y lo guarda en la variable outputValue

lcd.setCursor(0, 0); // Posicionar el cursor en una celda del lcd en especifico, en este caso 0,0 leadingZeros(sensorValue, 4); // Imprime el valor del sensor con el número de caracteres principales (0 o espacios como se especifica en la función leadingZeros) lcd.setCursor(6, 1); // posiciona el cursor en la columna 6 fila 1 lcd.print(percentValue); // imprime percentValue

Serial.print("sensor = " ); // imprimiendo los valores desde el serial: Serial.print(sensorValue); Serial.print("\t output = "); Serial.print(outputValue); Serial.print("\t procent = "); Serial.println(percentValue);

delay(1000); // retardo de 1 segundo }

void leadingZeros( int value, int width) { // Mostrar el resultado con los caracteres principales char valueStr[6]; // largo de la variable es 6 itoa (value, valueStr, 10); // itoa convierte a int en la cadena o string int len = strlen(valueStr); // calcula el ancho de valueStr if (len < width) { len = width - len; while (len--) lcd.print(' '); //Para que inice en cero coloque '0' entre (), para los espacios principales lugar '' entre () } lcd.print(valueStr); }

Comments

About This Instructable

291views

6favorites

License:

Bio: Voy siempre para adelante, dejando de lado lo que no sirve o no quiere servir siempre hay algo mejor en la vida que nuestro propio ... More »
More by lfcorrales:Instalando Arduino UNO R3 Atmega328pJuguemos Sensor PIR Para ArduinoDivirtiéndose Con El Arduino Promini
Add instructable to: