Como trabajar con un LCD con modulo I2C en Arduino en 4 pasos para un LCD 20x4 ( o 16x2)
Paso 1. Alambrar el modulo I2C al Arduino UNO
SDA - Pin A4 de Arduino
SCL - Pin A4 de Arduino
VCC - Fuente Arduino
GND - Tierra Arduino
Paso 2. Escanear la dirección del módulo con el siguiente código
//Descargado de:
//https://miarduinounotieneunblog.blogspot.com.co/2015/12/display-lcd-16x2-con-comunicacion-i2c.html
/* TITULO: Escaner de direcciones I2C
AUTOR:
MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
- FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
- TWITTER: https://twitter.com/MarianoCampoGa
- CORREO: marianodc83@gmail.com
DESCRIPCIÓN DEL PROGRAMA
Este programa sirve para buscar la dirección de comunicación I2C, en dispositivos conectados a nuestro
Arduino mediante este protocolo de comunicación. El programa nos envía todas las direcciones de los
dispositivos I2C que tengamos conectados en un determinado instante a través del monitor serie del IDE
de Arduino. En este caso vamos a utilizar el escaner I2C para encontrar la dirección de un display LCD
1602 conectado a través de este protocolo de comunicación.
ESQUEMA DE CONEXION
+-----+
+----[PWR]-------------------| USB |--+
| +-----+ |
| GND/RST2 [ ][ ] |
| MOSI2/SCK2 [ ][ ] A5/SCL[ ] | SCL del módulo I2C conectado al LCD 1602
| 5V/MISO2 [ ][ ] A4/SDA[ ] | SDA del módulo I2C conectado al LCD 1602
| AREF[ ] |
| GND[ ] |
| [ ]N/C SCK/13[ ] |
| [ ]IOREF MISO/12[ ] |
| [ ]RST MOSI/11[ ]~|
| [ ]3V3 +---+ 10[ ]~|
| [ ]5v -| A |- 9[ ]~|
| [ ]GND -| R |- 8[ ] |
| [ ]GND -| D |- |
| [ ]Vin -| U |- 7[ ] |
| -| I |- 6[ ]~|
| [ ]A0 -| N |- 5[ ]~|
| [ ]A1 -| O |- 4[ ] |
| [ ]A2 +---+ INT1/3[ ]~|
| [ ]A3 INT0/2[ ] |
| [ ]A4/SDA RST SCK MISO TX>1[ ] |
| [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] |
| [ ] [ ] [ ] |
| UNO_R3 GND MOSI 5V ____________/
\_______________________/
NOTAS:
- La alimentación y la masa del módulo LCM 1602 I2C V1 instalado en el LCD 1602, van directamente conectadas
a VCC (+5V) y GND respectivamente.
*/
// Librería necesaria para comunicación I2C
#include <Wire.h>
void setup()
{
Wire.begin(); // Iniciamos la comunicación I2C
Serial.begin(9600); // Iniciamos la comunicación con el monitor serie
//while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nEscaner de direcciones I2C");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Escaneando...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// Se utiliza el valor de retorno de Write.endTransmisstion() para ver si se ha reconocido
// o no la dirección I2C de un dispositivo
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("Dispositivo I2C encontrado en la direccion 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println("!");
nDevices++;
}
else if (error == 4)
{
Serial.print("Error desconocido en la direccion 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No se han encontrado direcciones I2C de ningun dispositivo \n");
else
Serial.println("Hecho\n");
delay(5000); // Espera 5 segundos hasta el siguiente escaneo
}
Paso 3. Descargar la libreria desde Github, e instalarla en Arduino (Programa -> Incluir Libreria...)
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
https://cloud.mail.ru/public/4q5r/YzCuu7hEW
Paso 4. Hola mundo del LCD con I2C
Tener en cuenta escribir la dirección del escaneo en la creación del objeto: lcd(0x3F, 20, 4), en este caso el escaneo nos arrojo 0x3f
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x3F for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 20, 4);
void setup()
{
// initialize the LCD
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
lcd.print("Hello, world!");
}
void loop()
{
// Do nothing here...
}
Otro enlace interesante:
http://osoyoo.com/2017/01/15/use-arduino-serial-port-to-talk-with-i2c-lcd-display/
No hay comentarios:
Publicar un comentario