YoMaker

Sitio web sobre proyectos de arduino para principiantes. Todo lo necesario para aprender a programar y montar tus primeros proyectos paso a paso.

  • Proyectos con Arduino
  • Herramientas electronica
  • Programar Arduino
  • Blog
  • Sobre mí
  • Contacto

Conexion de arduino a pantalla lcd i2c de caracteres.

By Paco Pons 4 Comments

arduino-lcd-i2cHola, hoy explicaremos la conexión de arduino a lcd i2c. Este tipo de pantallas son muy útiles en nuestros proyectos cuando necesitamos mostrar mensajes o datos y queremos prescindir de tener que tener conectado nuestro ordenador y pantalla haciendo así nuestro montaje totalmente independiente y portable.

Además de ser  muy económicos como puedes ver aquí: LCD I2C 16×2, suelen venir incorporados en muchos kit arduino.

Existen muchos modelos de pantallas LCD que podemos conectar a nuestro arduino, las diferencias fundamentales las podemos ver en el tamaño y el tipo de conexión. En este post vamos a usar una pantalla de texto alfanumérico, pero también las hay gráficas y a color con lo que podremos cubrir todo tipo de necesidades en nuestros proyectos.

Conexión de arduino lcd I2C.

La pantalla lcd que vamos a usar, se conecta por bus I2C, este tipo de conexión es de tipo serie y tiene muchas ventajas con respecto a hacerlo en conexión paralelo. La principal es que con solo 4 conexiones podemos comunicarnos con la pantalla lcd, al hacerlo en paralelo necesitaríamos usar 8 puertos de nuestro arduino y con el I2C solamente 2 + 2 de alimentación.

arduino lcd i2c bus

Esquema de conexión bus I2C

En el sistema de comunicación por I2C, un micro actua como maestro y se comunica con el resto de periféricos como esclavos compartiendo las conexiones marcadas como SDA y SCL, el maestro manda el dato por el bus y la dirección del periférico al que va destinado. Por eso, cada periférico (pantalla, sensor,…) solo pueden tener una dirección única para que no haya conflicto.

arduino lcd i2c

Vista posterior LCD con adaptador bus I2C

En la parte posterior de la pantalla lcd i2c, podremos ver el adaptador paralelo-I2C que viene normalmente soldado a la pantalla.  En él podemos ver las 4 conexiones necesarias con el arduino, un potenciómetro para regular el contraste de la lcd, y en la parte inferior del potenciómetro unos contactos (pads A1 A2 A3) con el que podríamos cambiar la dirección asignada de la pantalla en caso de que hubiese conflicto con otro modulo conectado. Por defecto estas pantallas suelen venir con la direccion 0x3F o 0x27 y no es necesario modificar nada.

Como podemos ver, las conexiones necesarias entre la pantalla lcd i2c y el Arduino son:

arduino lcd i2c

Conexiones lcd i2c con Arduino

  • SDA – A4
  • SCL – A5
  • VCC – +5v
  • GND – GND

 

 

 

En Arduino Uno, Nano y Mini Pro, SDA es el pin A4 y el SCL el pin A5. Para otros modelos de Arduino consultar en el fabricante.

Programacion de lcd I2C con Arduino

Una vez conectado nuestro arduino y lcd i2c, vamos a ver como programarlo para poder usarlo en nuestros proyectos.

Serán necesarias dos librerias que tendremos que instalar en nuestro IDE de arduino:

  • Wire.h  (para usar el bus I2C)
  • LiquidCrystal_I2C.h (para uso del LCD I2C)

arduino lcd i2c

Existen muchas librerias parecidas, yo os recomiendo instalar estas que me han funcionado bien. Para ello en el IDE tenéis que ir al gestor de librerías dentro del menú Programa–Incluir libreria–Gestionar libreria.  En versiones antiguas del IDE de Arduino no existe así que es recomendable actualizarse de vez en cuando.

Vamos ahora con el código de ejemplo:

Prueba LCD I2C
Arduino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* Prueba LCD I2C 16x2 caracteres
******  Yomaker.com  2017  *****
*/
#include <Wire.h>                 // libreria necesaria para bus I2C
#include <LiquidCrystal_I2C.h>    // libreria necesaria para display I2C
 
LiquidCrystal_I2C lcd(0x27,16,2);  // configuramos el LCD en la direccion de bus I2C que es
                                  //    0x27 y el tamaño columnas x filas 16x2
void setup()
{
  lcd.init();                     // initialza el lcd
  lcd.backlight();                // enciende la luz de fondo del display
  lcd.setCursor(0,0);             // apuntamos el cursor a la primera fila y primer caracter e
  lcd.print("hola mundo");        // imprimimos el texto entre ""
}
 
void loop()
{
  
  lcd.setCursor(0, 1);       // apuntamos el cursor al primer caracter de la segunda fila
  lcd.print(millis()/1000);  // imprimimos el tiempo transcurrido en segundos
  lcd.print(" segundos");    // y el texto a continuacion
 
}

Empezaremos por usar las dos librerias comentadas antes con #include.

En la siguiente línea configuramos nuestro LCD I2C en el que necesitamos saber la dirección I2C (en este caso 0x27) y el tamaño en columnas por filas, en mi caso tengo uno de 16×2:

Arduino
1
2
LiquidCrystal_I2C lcd(0x27,16,2);  // configuramos el LCD en la direccion de bus I2C que es
                                  //    0x27 y el tamaño columnas x filas 16x2

Los fabricantes de LCD suelen usar las direcciones 0x27 y 0x3F, asi que cambiarla a la otra si no os funciona a la primera. En el caso de que ninguna de las dos funcionase, intentar averiguarlo a través del fabricante.

en el setup(), como viene explicado en los comentarios, inicializamos el lcd, encendemos la iluminación de fondo, apuntamos el cursor a la primera linea e imprimimos «hola mundo». Todo esto como lo hacemos solo una vez, lo pongo en setup().

en la funcion loop(), vamos a usar la segunda línea del display y vamos a imprimir el tiempo en segundos transcurrido desde que conectamos nuestro arduino:

Arduino
1
2
3
4
5
6
7
8
void loop()
{
  
  lcd.setCursor(0, 1);       // apuntamos el cursor al primer caracter de la segunda fila
  lcd.print(millis()/1000);  // imprimimos el tiempo transcurrido en segundos
  lcd.print(" segundos");    // y el texto a continuacion
 
}

con la primera instrucción apuntamos a la fila inferior del display 1, (la primera es la 0), luego con millis() nos da los milisegundos transcurridos desde que se encendió el arduino, esto se va actualizando automáticamente por lo que solamente con llamar a la función, nos devuelve el tiempo. Como son milisegundos los dividimos por 1000 para pasarlos a segundos.

En la última linea, añadimos el texto segundos que se imprimirá a continuación del tiempo ya que el cursor del display se desplaza al final de lo que hemos  imprimido antes.

Una vez cargado nuestro código en el arduino podremos verlo funcionar asi:

La verdad es que una pantalla de este tipo queda muy bien en cualquier proyecto y, por el precio tan bajo que tiene, (poco mas de 2€), vale la pena incorporarla.

Hay kits Arduino que ya la llevan como este: >>Kit arduino recomendado

Puedes ver un artículo sobre este kit aqui.

o también las puedes comprar sueltas como esta: >>LCD I2C 16×2

Espero que montes pronto tu display lcd en tu arduino y me lo cuentes en los comentarios

Saludos makers!!

Opt In Image
Si te ha gustado este artículo suscríbete al blog.
No te pierdas nada!!

Recibe los artículos directamente en tu email el día de la publicación.

Garantía 100% libre de spam.

Si te ha gustado, compártelo en tu red...
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin

Filed Under: Blog, Proyectos con Arduino

Comments

  1. octavio real says

    4 junio, 2019 at 11:00

    Superclaro
    He encontrado muchos tutoriales sobre LCD´S pero este es el mas estructurado y didactico que he visto y no hace falta liarse mucho para eso
    Te felicito

    Responder
    • Paco Pons says

      6 junio, 2019 at 22:13

      Muchas gracias Octavio.

      Responder
  2. Ivan says

    12 febrero, 2021 at 21:59

    Hola

    HE comprado una pantalla LCD soldada a un chip de I2C (https://www.amazon.es/gp/product/B01E4YUT3K/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1)

    He seguido tu tutoría, instalando el paquete LiquidCrystal_I2C.h pero cuando ejecuto el ejemplo, se ilumina el lcd pero no muestra ningún texto

    Tengo una placa mega2560 r3..

    Gracias de antemo!!

    Un saludo

    Responder
    • Paco Pons says

      21 mayo, 2021 at 11:33

      mira a ver si tienes el contraste del LCD a tope o apagado. Mueve un poco el potenciómetro que lleva a ver…

      Responder

Deja un comentario Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Acerca de Francisco Pons

francisco-pons-acerca-de

Tecnófilo, en continua formación. Apasionado de la electrónica, robótica y automatización. Ingeniero industrial electrónico con vocación maker.

Sígueme en:
Ver el perfil de Francisco Pons Ruiz en LinkedIntwitter

Kit Arduino recomendado principiantes

comprar arduino kit

Ver mejor precio Starter Kit for Arduino UNO R3. Envío gratis a través de Aliexpress

New title

Licencias de contenido

El contenido de este sitio web se ofrecen bajo las licencias de Creative Commons

by-nc-sa.eu

Categorías

  • Blog
  • Herramientas electronica
  • Programar Arduino
  • Proyectos con Arduino

Copyright Yomaker.com © 2023 Politica de privacidad | Politica de cookies | Aviso Legal