Arduino ejemplos: LCD con i2c

Buenas a todos!!!
Si ya vimos antes como utilizar un LCD 16x02, Arduino: El LCD 16x2 y
Arduino: Diferentes efectos en un LCD 16x2
directamente conectando a Arduino usando en total un mínimo de 6 líneas, esto puede que no sea un problema si tú proyecto no utiliza muchos sensores, pero si es necesario usar el máximo de pines disponibles existe una solución que puedes usar, el módulo i2c para LCD.
Con este dispositivo conseguiremos un ahorro en los pines de nuestro Arduino pudiendo, además, conectar más dispositivos i2c a las mismas líneas de control.

El bus TWI/i2c:

El bus serie i2c fue creado por Philips en 1982 para la comunicación entre microcontroladores y periféricos.
El TWI (Two Wired Interface) es idéntico a nivel técnico pero atmel tuvo que cambiar las siglas por motivos de licencias, pero a efectos prácticos es lo mismo.
i2c está diseñado como un bus de comunicación Maestro-Esclavo, con esto uno de los dispositivos (maestro) regula la comunicación y los demás dispositivos (esclavos) que atienden sus peticiones.

Este bus está formado por dos líneas, SLK y SDA.
SLK (Serial Clock) marca la velocidad de comunicación y marca los tiempos para la lectura/escritura en el bus.
SDA (Serial Data) es la línea por donde se transmite la información.

Cada dispositivo conectado al bus tiene una dirección, así que para conectarnos con el debemos saber dicha dirección, con este programa podréis saber cual es la dirección de vuestro dispositivo:
leer dirección de un dispositivo i2C

Conexión Arduino modulo i2C:
Conexión Arduino UNO con LCD i2C

Conexión Arduino UNO con LCD i2C

Arduino i2C escaner

Arduino i2C Scan

Librerias:

Para este ejemplo utilizaremos la librería LiquidCristal_I2C de la web oficial www.dfrobot.com o directamente aquí y cuenta con las siguientes funciones:

LiquidCrystal_I2C Nombre (lcd_Addr, n_filas, m_columnas);Para esta función necesitamos la dirección que obtuvimos con el i2C Scaner, como se puede ver en la imagen es 0x3F y el número de filas y columnas que tiene nuestro LCD, en este caso es un 16x02. Con esta información la función quedaría así: LiquidCrystal_I2C lcd (0x3F, 16, 2);

lcd.begin(); Esta función la situaremos en el setup() y es la que inicia el LCD.

lcd.backlight(); y lcd.noBacklight();Apaga y enciende la luz Led del LCD.

Las demás funciones son las mismas que en la librería LiquidCristal.h las cuales están explicadas en la entrada que comente al principio: Arduino: El LCD 16x2.

Veamos como quedaría el mitico "Hola Mundo":
//Ejemplo "Hola mundo" con modulo i2C
#include &ltWire.h>
#include &ltLiquidCrystal_I2C.h>

// configura el LCD con la dirección 0x3F con 16 caracteres y dos lineas.
LiquidCrystal_I2C lcd(0x3F, 16, 2);

void setup()
{
// Inicia el LCD
lcd.begin();

// Enciende el backlight y escribe el mensaje.
lcd.backlight();
lcd.print("Hola mundo!");
}

void loop()
{
// Sin loop
}

Arduino LCD i2C "Hola Mundo"

Arduino LCD i2C "Hola Mundo"

No hay mucho que explicar en este ejemplo lo podéis encontrar en los ejemplos de la misma librería.

Ahora vamos a escribir en las 2 lineas del LCD.

Vamos a situar la primera linea (0) en la segunda posición (1) y nos mostrará la dirección del LCD.

La segunda linea (1) en la posición 1 (0) y mostrará un texto.

También encenderá y apagara la pantalla durante 500ms 3 vecces y la mantendrá encendida durante 5 segundos.

#include &ltWire.h>
#include &ltLiquidCrystal_I2C.h>

//Guardamos la direccion del modulo i2C en una variable tipo String.
const String direccion = "0x3F";
// configura el LCD con la dirección 0x3F con 16 caracteres y dos lineas.
LiquidCrystal_I2C lcd(0x3F, 16, 2);

void setup()
{
// Inicia el LCD
lcd.begin();
// Enciende el backlight.
lcd.backlight();
}

void loop(){
lcd.setCursor(1,0); // Posiciona el cursor (Pos=1,Linea=0).
lcd.print("Direccion:"); // Muestra texto empezando en esa posicion
lcd.print(direccion); // Imprime la direccion el modulo i2C.
lcd.setCursor(1,1); // Posiciona el cursor (Pos=1,Linea=1).
lcd.print ("Infotronikblog"); //Imprime el mensaje
delay(5000); // Pausa de 5 segundos

for (int x=0; x<3 3="" 500ms.="" apaga="" backlight.="" backlight="" bucle="" de="" delay="" el="" enciende="" lcd.backlight="" lcd.nobacklight="" para="" pausa="" pre="" repetir="" veces.="" x="">




Fuente: este post proviene de InfotronikBlog, donde puedes consultar el contenido original.
¿Vulnera este post tus derechos? Pincha aquí.
Creado:
¿Qué te ha parecido esta idea?

Esta idea proviene de:

Y estas son sus últimas ideas publicadas:

Buenas a todos!!! Esta publicación va con un poco de retraso... ya tenía la Raspberry Pi 2 desde hacia bastante tiempo, pero como la tenia en otros usos y no he podido hacerle una entrada en condicion ...

Recomendamos

Relacionado

Arduino Ejemplos nRF2401 ...

Como vimos en la entrada anterior: Arduino Ejemplos: El modulo NRF2401 comunicación Unidireccional se pueden enviar datos de un módulo nRF2401 a otro. Bien, esta comunicación puede realizarse en los dos sentidos, es decir, cada modulo tiene la capacidad de enviar y recibir datos. Para ello necesitaremos dos canales, uno para enviar y otro para escuchar. Esta comunicación es de tipo Half-Duplex ya ...

Tutoriales arduino robótica

Arduino es una plataforma de desarrollo de software y hardware libres que incorpora un microcontrolador re-programable y una serie de pines hembra, los que permiten establecer conexiones entre el microcontrolador y los diferentes sensores y actuadores de una manera muy sencilla. ¿Por qué usar Arduino? Arduino es libre y extensible: esto quiere decir que cualquiera que desee ampliar y mejorar el di ...

analógico Arduino Ejemplos ...

Muy buenas a todos!!! Muchos de los sensores que utilizamos para Arduino son sensores analógicos como potenciómetros, fotoresistencias, etc. Para esto Arduino utiliza unos pines específicos, que van desde el A0 al A5 en Arduino UNO y del A0 al A7 en el Arduino Nano. El ADC: Para poder leer correctamente los valores se utilizan 3 pines por sensor, +5V An GND. Por si mismo Arduino es incapaz de rea ...

Arduino Ejemplos manuales ...

Buenas a todos!!! Hoy les traigo un ejemplo de los más básicos que se pueden realizar con Arduino: El semáforo. Si bien es un practica sencilla, nos ayudará a entender como realizar secuencias con LED y el bucle FOR que creo ya describí en otra entrada de este mismo blog. Arduino: Efecto Coche fantástico Podría haber realizado la practica con un solo semáforo, pero creo que queda mucho más bonito ...

analógico Arduino i2C ...

Buenas Ardublogeros!!! La primera versión del software ya esta lista así que en esta entrada voy a explicar el código ya que esta vez he optado por estructurar el software por pestañas como vimos en la entrada anterior: Ejemplos Arduino: Trabajando con pestañas en el Sketch. Es algo que ya había visto en algún proyecto y no le había hecho mucho caso, pero en programas donde hay muchas lineas creo ...

Arduino Añadir fichero Ejemplos ...

Muy buenas a todos!!! A todos nos ha pasado que cuando ya le pillamos el truquillo a esto de Arduino hacemos programas más y más grandes, añadiendo funciones extras haciendo que se sumen lineas hasta casi volvernos locos buscando esa linea... Para solucionar esto y hacer que nuestro código este mucho mejor estructurado. Podemos solucionar esto de varias maneras. Una de ellas seria con Sketch que v ...

Arduino Comunicaciones Ejemplos ...

Buenas a todos!!! Siguiendo con la comunicación inalámbrica le toca el turno a los módulos NRF2401. Estos pequeños módulos comunican con Arduino para poder transmitir y recibir datos en la banda de 2.4GHz. Esto hace posible una comunicación a una distancia de unos 250 metros, más que considerable si lo comparamos con los módulos HC-06 que solo tiene un alcance de entre 5 y 10 metros. Como casi tod ...

Arduino Comandos AT Comunicaciones ...

Buenas a todos!!! Estamos otra vez por aquí con nuevos ejemplos. En este caso estoy probando una pequeña estación meteorológica con Arduino y el módulo ESP8266. Si bien he tenido que mirar muchas páginas y diferentes ejemplos hasta encontrar el que más a mi modo de ver fácil y con un funcionamiento de notable. Tuve bastantes problemas con un fallo llamado "busy s..." incluso después de ...

Arduino Comunicaciones ESP8266

Y Felices Fiestas a todos!!! Ayer tuve un pequeño problema cuando estaba programando un menú configurador para hacer más sencilla la manera de configurar el ESP8266. Estaba con el menú del Baudrate cuando me equivoque al meter un baudrate que no era valido, el ESP8266 dejo de funcionar. Tengo varios módulos más, pero ya que estaba en faena me decidí a solucionarlo en el momento... Eso pensé en un ...

Arduino DHT11 Ejemplos ...

Por fin me ha llegado el sensor de temperatura y humedad DHT11. Este tipo de sensores lee la humedad y temperatura ambiente la transmite a Arduino y de ahí a una pantalla LCD o al monitor serial del IDE de Arduino. El DHT11 es el sensor es el "barato". No tiene mucha precisión un 2% en temperatura midiendo de 1ºC en 1ºC y un 5% en humedad, pero servirá para cualquier proyecto, que como y ...