Haga clic para más productos.
No se encontraron productos.
Búsqueda de blogs
Artículos Recientes
Últimos comentarios

Tutorial LCD con I2C, controla un LCD con solo dos pines

288566

En este tutorial aprenderemos a utilizar el Módulo adaptador de LCD a I2C y de esa forma poder controlar nuestro LCD Alfanumérico con solo dos pines de nuestro Arduino.

Este tutorial es similar al Tutorial LCD, conectando tu Arduino a un LCD1602 y LCD2004, con la pequeña diferencia que ahora utilizaremos un Módulo adaptador LCD a I2C. Trabajaremos los mismos ejercicios  del primer tutorial y de esa forma demostraremos que utilizar el módulo adaptador es tan sencillo como si trabajáramos directamente con el LCD.

 

Hardware del Módulo adaptador LCD a I2C

El Módulo adaptador LCD a I2C que usaremos está basado en el controlador I2C PCF8574, el cual es un Expansor de Entradas y Salidas digitales controlado por I2C. Por el diseño del PCB este módulo se usa especialmente para controlar un LCD Alfanumérico.

La dirección I2C por defecto del módulo puede ser 0x3F o en otros casos 0x27. Es muy importante identificar correctamente la dirección I2C de nuestro modulo, pues de otra forma nuestro programa no funcionará correctamente. Para identificar la dirección especifica de nuestro módulo podemos utilizar un pequeño sketch de prueba llamado: I2C Scanner, el cual nos permite identificar la dirección I2C del dispositivo conectado al Arduino. Si en caso existiera la necesidad de trabajar con más de un LCD podemos modificar la dirección I2C del modulo adaptador. Para esto es necesario soldar los puentes A0, A1 y A2 presentes en el módulo, estos tres puentes son los bits menos significativos de la dirección I2C del módulo. La dirección 0x3F en binario sería: 0|0|1|1|1|A2|A1|A0 y la dirección 0x27: 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 nueva dirección sería 0|0|1|0|0|0|0|0 (0x20), para un chip que anteriormente era 0x27.

Módulo adaptador LCD a I2C

Para controlar el contraste de los dígitos en el LCD solo necesitamos girar el potenciómetro que se encuentra en el módulo, hasta quedar conformes con el contraste mostrado.

La luz de fondo se controla principalmente por software desde el Arduino, pero el módulo también permite desconectar el Led de la luz de fondo removiendo un jumper LED.

 

Conexiones entre Arduino y Módulo adaptador LCD a I2C

El adaptador LCD a I2C tiene los pines ordenados para conectar directamente al LCD, esto lo podemos hacer a través de un protoboard o soldando directamente al LCD.

conexion adaptador LCD a I2C

Para conectar con el modulo con el Arduino solo utilizamos los pines I2C del Arduino (SDA y SCL) y alimentación (GND y 5V), los pines I2C varían de acuerdo al modelo de Arduino con el que trabajemos, en la siguiente tabla podemos ver cuales son los pines I2C para cada modelo de Arduino.

Adaptador LCD a I2C

Arduino Uno, Nano, Mini.

Arduino Mega , DUE

Arduino Leonardo

  GND

GND

GND

GND

  VCC

5V

5V

5V

  SDA

A4

20

2

  SCL

A5

21

3

   

conexion arduino y LCD I2C

  

* Las conexiones para el LCD 20 x 4 son las mismas.

 

Librería LiquidCrystal_I2C para Arduino

Existen diferentes tipos y versiones de librerías para trabajar con el módulo Adaptador LCD a 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, revisaremos las funciones principales:

LiquidCrystal_I2C(lcd_Addr, lcd_cols, lcd_rows)

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

init()

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.

Ahora que hemos repasado la librería veamos algunos ejemplos:

 

Ej 1. Un Hola mundo con Arduino y LCD

Mostraremos  texto y un valor numérico en el LCD, para esto cargamos el siguiente sketch:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

//Crear el objeto lcd  dirección  0x3F y 16 columnas x 2 filas
LiquidCrystal_I2C lcd(0x3F,16,2);  //

void setup() {
  // Inicializar el LCD
  lcd.init();
  
  //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);
}

Después de cargar, en su LCD deben obtener el siguiente resultado

 

 Hola mundo con LCD I2C

 

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

LiquidCrystal_I2C lcd(0x27,20,4);

 

Ej 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  0x3F y 16 columnas x 2 filas
LiquidCrystal_I2C lcd(0x3F,16,2);  //

void setup() {
  // Inicializar el LCD
  lcd.init();
  
  //Encender la luz de fondo.
  lcd.backlight();
  
  // Escribimos el Mensaje en el LCD en una posición  central.
  lcd.setCursor(10, 0);
  lcd.print("WWW.NAYLAMPMECHATRONICS.COM");
  lcd.setCursor(4, 1);
  lcd.print("Tutorial LCD, Test de desplazamiento  ");
}

void loop() {
  //desplazamos una posición a la izquierda
  lcd.scrollDisplayLeft(); 
  delay(500);
}

El resultado será el texto desplazandose de derecha a izquierda.

desplazamiento  de texto con LCD I2C

 

Ej 3. Mostrando datos de sensores o variables en el LCD

En este ejemplo mostramos en el LCD variables, que pueden representar valores de sensores u otros datos. Para simular los sensores usaremos potenciómetros conectados a los puertos analógicos.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

//Crear el objeto lcd  dirección  0x3F y 16 columnas x 2 filas
LiquidCrystal_I2C lcd(0x3F,16,2);  //

void setup() {
  // Inicializar el LCD
  lcd.init();
  
  //Encender la luz de fondo.
  lcd.backlight();
  
}

void loop() {
  int sen1=analogRead(A0);
  float sen2=analogRead(A1)*(5.0 / 1023.0);
  float sen3=analogRead(A2)*(100.0 / 1023.0);
  int tiempo=millis()/1000;
  // Cursor en la primera posición de la primera fila
  lcd.setCursor(0,0);
  lcd.print("ADC:");
  lcd.print(sen1);
  lcd.print("   ");
  // Cursor en la 11° posición de la primera fila
  lcd.setCursor(10,0);
  lcd.print("V:");
  lcd.print(sen2,1);//1 decimal
  lcd.print("V  ");
  // Cursor en la primera posición de la 2° fila
  lcd.setCursor(0,1);
  lcd.print("T:");
  lcd.print(sen3,1); //1 decimal
  lcd.print("337C  "); // "337" -> "°"
  // Cursor en la 11° posición de la 2° fila
  lcd.setCursor(10,1);
  lcd.print("t:");
  lcd.print(tiempo);
  lcd.print(" s  ");
  
  delay(200);
  
}

El resultado debe ser el siguiente:

 

 Datos y variables en LCD I2C

 

Ej 4. Agregando nuevos caracteres a nuestro LCD

En algunos casos el LCD no incluye por defecto los caracteres que necesitamos, o deseamos dibujar caracteres personalizados, en este caso usamos la función createChar () pero antes estudiemos como está constituido un carácter:

Un carácter está formado  por una matriz de 5x8 pixeles  los cuales se representan por 8 bytes, uno para cada fila, los 5 bits menos significativos representan los pixeles del carácter:

  

caracter alfanuemrico LCD

  

Como máximo podemos crear 8 caracteres nuevos.

Para este ejemplo crearemos los siguientes caracteres:

 pixeles nuevos caracteres LCD

   

A continuación se muestra el código para implementar los nuevos caracteres.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

//Crear el objeto lcd  dirección  0x3F y 16 columnas x 2 filas
LiquidCrystal_I2C lcd(0x3F,16,2);  //
byte N[8] = {
B11111,
B10001,
B10001,
B10001,
B10001,
B10001,
B10001,
B00000,
};
byte A[8] = {
B11111,
B10001,
B10001,
B10001,
B10001,
B11111,
B10001,
B00000,
};
byte Y[8] = {
B10001,
B10001,
B10001,
B10001,
B11111,
B00100,
B00100,
B00000,
};
byte L[8] = {
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B11111,
B00000,
};
byte M[8] = {
B11111,
B10101,
B10101,
B10101,
B10101,
B10101,
B10101,
B00000,
};
byte P[8] = {
B11111,
B10001,
B10001,
B10001,
B11111,
B10000,
B10000,
B00000,
};
byte cara[8] = {
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
B00000,
};
byte cuerpo[8] = {
B01110,
B01110,
B00100,
B11111,
B00100,
B01010,
B10001,
B00000,
};

void setup() {
  // Inicializar el LCD
  lcd.init();
  
  //Encender la luz de fondo.
  lcd.backlight();
  
  //creamos los nuevos caracteres
  lcd.createChar (0,N);
  lcd.createChar (1,A);
  lcd.createChar (2,Y);
  lcd.createChar (3,L);
  lcd.createChar (4,M);
  lcd.createChar (5,P);
  lcd.createChar (6,cara);
  lcd.createChar (7,cuerpo);
 // Escribimos el texto en el LCD
  lcd.setCursor(0, 0); 
  lcd.print("Tutorial LCD_I2C");
  lcd.setCursor(0, 1);
  lcd.write (byte (7));
  lcd.print(" ");
  lcd.write (byte (6));
  lcd.print(" ");
  lcd.write (byte (0));
  lcd.write (byte (1));
  lcd.write (byte (2));
  lcd.write (byte (3));
  lcd.write (byte (1));
  lcd.write (byte (4));
  lcd.write (byte (5));
  lcd.print(" ");
  lcd.write (byte (6));
  lcd.print(" ");
  lcd.write (byte (7));
  

  
}

void loop () {}

El resultado del ejemplo anterior es el siguiente:

  

nuevos caracteres LCD I2C

  

Los ejemplos anteriores se trabajan similar con un LCD2004

 

 

Productos relacionados
Artículos relacionados
70 Comentarios
  • Arturo

    Arturo 10/03/2021 Responder

    Tengo un proyecto, el cual tiene display, botones, sensores de temp y reles, el problema lo tengo cuando entro en un menu q tengo q me empiezan a salir caracteres extraños, desde un momento en adelante, mientras no y la pantalla principal dond muestro las temp no le pasa normalmente, q podria ser, saludos
  • Jordi

    Jordi 27/09/2020 Responder

    Si no les funciona, ejecuten un escanner de i2c. Este sketch de esta página:
    https://www.gadgetreboot.com/how-to-easily-find-your-i2c-address-on-arduino/
    Al funcionarlo y abrir el monitor serial, nos dice la direccion i2c, la cual deben sustituir.
    De nada.
  • Juan Ignacio

    Juan Ignacio 23/09/2020 Responder

    Hola, ocupaba la LCD2004A con un arduino UNO R3. Hize todo lo del primer diagrama y no se me imprimia nada en pantalla. LO solucioné yendo a la instruccion "LiquidCrystal_I2C lcd(0x3F,16,2);" del programa. Cambié la declaracion de los valores 0x3F, 16 y 2 por 0x27, 20 y 4, que serian los valores de direccion para el LCD que yo ocupaba y la declaracion de filas y columnas.
  • Sebas

    Sebas 31/05/2020 Responder

    Hola tengo un proble con la lcd le escribo el código y aparece en la lcd pero al rato empiezan a aparecer símbolos que puedo hacer en este caso
  • Ray

    Ray 28/05/2020 Responder

    Hola, probe con arduino UNO y tengo dos pantallas, una de 16x2 y una de 20x4, en la pantalla de 16x2 no tuve ningún inconveniente con ninguno de los programas, pero con la 20x4 es hora que no puedo visualizar nada, ya regule potenciometro de LCD, ya también realice el scann de la dirección I2C (0x27) y sigue sin funcionar, alguien podría ayudarme? sera algo de la librería? utilice la de matias, ya que con la otra no me funcionaban ni el 16x2. saludos.
  • Anthony Frank Casas Garcia

    Anthony Frank Casas Garcia 29/04/2020 Responder

    Buenas noches,

    Una consulta en una parte de mi circuito se tiene que contar pero cada vez que llega al número 38 dá uno mas y se reinicia el programa el LCD y todo estoy usando Atmega 8 a LCD 20x4 por comunicaión i2c. Ya he probado cambiando varios detalles en el programa pero siempre se reinicia.
  • Ernesto

    Ernesto 04/12/2019 Responder

    Buen dia! Cuando hago la carga del IDE me dice que que LIBRERIA INVALIDA... como puedo solucionar esto?
  • Lalo

    Lalo 26/11/2019 Responder

    Hola, disculpen ¿se tienen que usar exclusivamente los pines A4 y A5 para este modulo? o ¿puedo utilizar otros?
  • Dario

    Dario 24/10/2019 Responder

    hola! quisiera saber, en el caso de querer tener 4 displays LCD con sus respectivos modulos I2c, cual es la distancia maxima que puedo tener entre el arduino y cada uno de ellos sin que se pierda la señal ?
  • JAIRO

    JAIRO 09/10/2019 Responder

    Excelente tutorial, gracias por compartir tus conocimientos!
  • Juan

    Juan 09/08/2019 Responder

    Muchas Gracias! muy claro el tutorial y muchas gracais a Julio Hurtado por su comentario, pase 20 minutos revisando por que no aparecia nada en el display. Imprescindible tener en cuenta regular el brillo del LCD si es la primera vez que lo utilizan.
    Saludos
  • Nayo L

    Nayo L 10/06/2019 Responder

    Hola, gracias por la informacion, muy detallada y entendible. Una consulta sobre el protocolo 12C, como se puede hacer para mostrar numeros grandes en un display de 20x4? Espero que puedas ayudarme. Gracias. :)
  • reviejo

    reviejo 14/04/2019 Responder

    Gracias por la claridad. Que funcione un dht 22 más un bmp180 y que salga todo por el LCD es casi un milagro. teniendo en cuenta mi edad me dan una satisfacción enorme
  • FER

    FER 24/02/2019 Responder

    Hola !
    tengo una placa Arduino mega y me da fallo en la compilacion de este programa.
    podriais mandarme el sketch completo ?
    mil gracias
  • Franklin

    Franklin 01/02/2019 Responder

    Hola, necesito el código y/o direcciones a enviar a la interfase para programarlo usando hi-tech. Gracias
  • Gary Valenzo

    Gary Valenzo 20/12/2018 Responder

    Buenas tardes. Con este modulo, cuantos Display puedo conectar? Ya que veo que se conecta en entradas Analogas
    Gracias
  • andres

    andres 24/11/2018 Responder

    hace 1 dia que me venia quebrando la zabeca y el LCD IIC no funcionaba para nada hasta que di con esta pagina y leyendo los comentarios y cambiando la libreria Voila, gracias graciasa gracias todo full, saludos desde Puerto Varas, Chile
  • Egor

    Egor 18/11/2018 Responder

    Hola. Si conectamos pulsador (o switcs) en A0, A1, A2, podemos cambiar la dirección de la pantalla en funcionamiento?
    Con esto podría mostrar distinta info en el mismo display.
    Gracias!!
  • Escualo

    Escualo 18/11/2018 Responder

    Hola. Si conectamos pulsador (o switcs) en A0, A1, A2, podemos cambiar la dirección de la pantalla en funcionamiento?
    Con esto podría mostrar distinta info en el mismo display.
    Gracias!!
  • lobatos

    lobatos 01/11/2018 Responder

    bro muy buen material me a servido mucho, me gusto tu contador de segundos solo que me queda la duda de¿ como puedes parar el incremento de segundos en tu programa? si me pudieras ayudar te lo agradeceria.
  • khalid abdeddaim

    khalid abdeddaim 08/10/2018 Responder

    gracias era muy útil para me
  • Matute

    Matute 08/08/2018 Responder

    Gracias Matias fue de muvha ayuda .. soy nuevo en esto y me estuve varias horas hasta que mire tu comentario Matias..saludos y gracias tambien por el tutorial..
  • Julio Hurtado

    Julio Hurtado 28/07/2018 Responder

    Muy buen tutorial, Felicitaciones de una vez que claro el manejo de la librería I2C.
  • David

    David 12/07/2018 Responder

    Hola! Dices que se puede controlar la luz de fondo por software. Serias tan amable de decirme como? Saludos desde España
  • Jorge

    Jorge 09/06/2018 Responder

    Desde Uruguay te mando muchas felicitaciones por este artículo. Me aclararon muchas dudas
  • VALERIA

    VALERIA 06/06/2018 Responder

    hola!! si es que alguien podria ayudarme porfavor!!! , yo tengo un LCD DE 20X4 y copie el codigo, cambie las dimensiones pero no me aparece absolutamente nada en el LCD, solamente alumbra la pantalla , que podria estar pasando ? ya intente con un monton de ejemplos diferentes y en todos me aparece lo mismo
    • Julio Hurtado

      Julio Hurtado 28/07/2018 Responder

      Hola, valeria.
      Eso suele ocurrir cuando conectas por primera vez la Pantalla al Arduino. Lo que debes hacer es mover el potenciometro para que puedas visualizar el contenido de tu LCD. Previo a ello, debes verificar que hayas conectado todo en su lugar.
      • Edgardo

        Edgardo 24/09/2019 Responder

        Grande maestro!!!
  • ing-josemartinsaavedra

    ing-josemartinsaavedra 29/05/2018 Responder

    ISTP AMG.la calida piura peru un agradecimiento,mis alumnos seran sus clientes desde ahora ,
  • Guillermo Malagón Zamora

    Guillermo Malagón Zamora 12/05/2018 Responder

    Tengo una duda, las salidas del arduino al lcd deben ser forzosamente A4 y A5?, lo que pasa es que estoy trabajando con un RFID y tengo ocupadas las salidas analógicas.

    Saludos y gracias por su página tan práctica y llena de ideas para trabjar.
  • JHONNY

    JHONNY 24/01/2018 Responder

    saludos amigos. ante que nada quiero felicitarlos por sus sugerencias.
    he tratado de desarrollar el proyecto del Juego “Runner Scape” con display LCD 1602 y comunicación I2C.
    y no he logrado nada. gracias a sus consejos obtuve el id de modulo.... 0X3F..... pero el código no funciona
    siempre sale error... por culpa de este comando..
    // Declaración del objeto
    // Terminales de conexión del LCD
    // addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
    como hacer... agradeceré su apoyo...
  • Fernando Castro

    Fernando Castro 26/12/2017 Responder

    Muy bueno el programa y con la libreria del primer comentario jalo muy bien, mi duda es que como le hago para que este programa lea o me de correctamente las lecturas de un sensor de temperatura a traves del LCD I2C ya probe en los demas pines y nada no se si tengo que agregarle algo mas a este codigo para que lea las temperaturas, para un sensor LM35 y el DS18B20, no se si este codigo lea a ambos sensores, me podrian ayudar se los agradeceria mucho, wl programa esta en el arduino UNO R3.
  • sergio

    sergio 11/12/2017 Responder

    ola a mi no me andubo. el problema es lcd.int() replace por lcd.begin() y anda perfect
  • gabriel

    gabriel 04/12/2017 Responder

    amigos ya eh echo toda la conexion y la programacion pero no me funciono....luego probe con el codigo para revisar mi i2c y en el monitor serie me dice "No i2c devices found" alguien me podria dar una razon o explicacion de que tengo mal,
    mi i2c lo solde directo y eh revisado que la soldadura no se junten...no se que hacer ayuda!!!!!!
  • Juan Antonio

    Juan Antonio 03/10/2017 Responder

    Tengan cuidado con la direccion por defecto!! Yo tenía la 0x3F!!!!!
  • Juan Antonio

    Juan Antonio 03/10/2017 Responder

    Tengan cuidado con la direccion por defecto!! Yo tenía la 0x3F!!!!!
  • Jazheel Quiroz

    Jazheel Quiroz 11/09/2017 Responder

    Hola
    Primero que nada, muchas muchas felicidades, me parece una excelente explicación la que estás dando...Me gustaría saber si podrías explicarme cómo hacer un menú de selección con arduino y lcd...ya intenté muchas veces y ninguno me queda :(
    Por favor
  • Jair_jair

    Jair_jair 04/08/2017 Responder

    Hola amigo que tal, tengo una duda, estoy haciendo un proyecto para un incubadora , tengo un sensor dht22 y display con el I2C 16x2 y le incorpore 2 botones para ajustar la temperatura deseada (+ y -) y que si el sensor detecta mas temperatura de la deseada encienda un ventilador .... ya quedo, solo que cuando oprimo los botones para subir o disminuir a la temperatura que el usuario quiera, debo dejar oprimido el boton unos 7 s para que cambie el valor en el display (de 1 en 1 )..... sabes a que se debe esto? tengo una tarjeta arduino UNO......
    • Naylamp

      Naylamp 22/08/2017 Responder

      Hola Jair, seguro debes estar haciendo pausas o procesos largos en cada iteración del loop(), tienes que asegurarte en leer más seguido los botones o leer en diferentes lugares de tu código
  • Naylamp

    Naylamp 30/07/2017 Responder

    Hola, Si en el LCD muestra lo caracteres incompletos prueba con la libraría del primer comentario, pero si no muestra nada es porque no se está comunicando el modulo con el arduino, para descartar problemas de librería o de dirección i2C has un escáner I2C, copia el código de las siguiente página: http://playground.arduino.cc/Main/I2cScanner después de cargar en el arduino abre el monitor serial, el programa busca todos los dispositivos conectados al bus y te muestra la dirección I2C. Recuera que los pines i2c para el Due son el 20 y 21.
  • jorpal13

    jorpal13 14/07/2017 Responder

    buenos dias comáñero, resulta que he intentado con su codigo de liquidcrystal_i2c para un lcd de 20x4 y arduino due y no me funciona ya le he hecho de todo y nada, usted de por casualidad no tiene la libreria modificada para esta placa se lo agradeceria mucho, que funcione bien, bye.
    • Naylamp

      Naylamp 30/07/2017 Responder

      Hola, Si en el LCD muestra lo caracteres incompletos prueba con la libraría del primer comentario, pero si no muestra nada es porque no se está comunicando el modulo con el arduino, para descartar problemas de librería o de dirección i2C has un escáner I2C, copia el código de las siguiente página: http://playground.arduino.cc/Main/I2cScanner después de cargar en el arduino abre el monitor serial, el programa busca todos los dispositivos conectados al bus y te muestra la dirección I2C. Recuera que los pines i2c para el Due son el 20 y 21.
      • Criscaos

        Criscaos 25/03/2019 Responder

        Hola, está genial el contenido. Estoy con las mismas condiciones de jorpal13 y llego hasta el punto en que le hago un escaneo y me dice que la dirección es 0x27, me prende la luz de fondo pero no me muestra los caracteres, nada. Estuve midiendo los voltajes en los pines D0-D7 y ninguno llega hasta un voltaje de 3.3 o 5V. De pronto sabe(n) qué librería me podría funcionar, gracias.
  • maria

    maria 11/06/2017 Responder

    DISCULPEN SOY NUEVA EN ESTO ,Y ESTOY UNIENDO UN HUELLERO DACTILAR CON EL DISPLAY , PERO TRABAJO CON EL INTERFAZ . HE BUSCADO MUCHAS LIBRERIAS QUE ME UNIERAN LOS DOS ,PERO NO HE TENIDO EXITO :( .En su mayoria me lo dan pero con conexion sin interfaz .SI ALGUNO DE USTEDES SUPIERA COMO SON LAS CONEXIONES DE ESTE CIRCUITO UNIDO SE LO AGRADECERIA MUCHO :
    HULLERO-LCD-(con interfaz) en ARDUINO UNO
    • Naylamp

      Naylamp 18/06/2017 Responder

      Hola María, en realidad no debería afectar el funcionamiento, nos indicas que tipo de sensor de huella dactilar estas usando?. El LCD se trabaja por I2C y así el sensor dactilar fuese I2c(a no ser que tenga la misma dirección) no debe afectar el funcionamiento entre ellos. Debe ser un problema de integración en tu programa.
  • jesus

    jesus 29/04/2017 Responder

    funciona muy bien en mi placa arduino leonardo el scanner me indico la direccion 0x3F y listo lo cambie.y funcino
  • Iñigo Garmendia

    Iñigo Garmendia 15/04/2017 Responder

    Hola, espectacular post! Tengo un arduino UNO Y una LCD I2C. Al principio probé con bastantes librerías de otros webs . Algunas me compilaban y otras no y las que compilaban no hacían nada, esto es no funcionaban. El otro día me paso una el profesor y por fin me apareció algo , pero solo la primera letra de cada fila. No se cual es el problema. He probado con tantas librerias que ya no se cual no he utilizado. Cual puede ser el problema? Puede ser algo que no sea la librería? Si es la librería, por una parte me gustaría saber que librería es la buena y si aparte de esa y la librería wire se necesita otra librería como liquidcrystal o lcd.h ?Ya que en cada post usan una diferente. Tego prisa ya que solo me falta esto para entregar el proyecto que seria para el 23. Gracias de antemano.
    • Naylamp

      Naylamp 27/04/2017 Responder

      Hola, Si te sale error de compilación es porque la librería está mal instalada, borra manualmente la librería e impórtala desde el gestor de librerías, si puedes también intenta probar con otra versión del IDE. Si compila normal pero no funciona podría ser por una mala conexión o la dirección i2c no es la correcta, la conexión varía de acuerdo al modelo de arduino que tengas y la dirección i2c lo puedes buscar cargando el siguiente programa: http://playground.arduino.cc/Main/I2cScanner . Intenta probar con la librería del primer comentario, con esa soluciona un problema similar al tuyo.
  • juan

    juan 03/04/2017 Responder

    hola naylamp, no me funciona ninguno de los codigos anteriores , que esta pasando ? , esta quemado el driver tal vez, que puedo hacer ?
    • Naylamp

      Naylamp 12/04/2017 Responder

      Hola Juan, para descartar problemas de librería has un escáner I2C, copia el código de las siguiente página: http://playground.arduino.cc/Main/I2cScanner después de cargar en el arduino abre el monitor serial, el programa busca todos los dispositivos conectados al bus y te muestra la dirección I2C. Si funciona normal esto, debe ser entonces un problema de librería o conexión
  • Jesly

    Jesly 15/03/2017 Responder

    Porque el init no se me pinta de color anaranjado; a que se debe ???
    • Naylamp

      Naylamp 26/03/2017 Responder

      Hola Jesly, puede ser por la versión del arduino que tienes o también porque recién has instalado la librería, intenta con cerrar y abrir el IDE de arduino.
  • Naylamp

    Naylamp 03/02/2017 Responder

    Para descartar problemas de comunicación Arduino-MóduloLCD, Pueden probar un Scanner I2C, EL scanner debe encontrar al módulo y su dirección correspondiente:

    http://playground.arduino.cc/Main/I2cScanner

  • Uriel

    Uriel 06/01/2017 Responder

    Buenas noches compañeros, les comento que adquirí este modulo y la pantalla LCD pero no me funciona, ya cargue ambas librerías y me sigue sin funcionar, si me pudieran ayudar se los agradecería.
    • Naylamp

      Naylamp 07/01/2017 Responder

      Hola Uriel, tienes errores al compilar? Te carga algunos caracteres en el LCD? Si tu LCD no muestra actividad puedes ser porque no está recibiendo datos del arduino, comprueba tu conexión y comprueba la dirección I2C, por lo general es 0x27 y configurable de 0x20 a 0x27, pero también hemos encontrado módulos que trabajan con dirección 0x3F.
  • Reinaldo

    Reinaldo 01/11/2016 Responder

    hola,

    Al cargar el primer programa, me aparece este error

    Class LiquidCrystal_I2C has no member named `init`

    ayudenme porfa.

    gracias
    • Naylamp

      Naylamp 05/11/2016 Responder

      Hola Reinaldo, es un problema de libraría, asegúrate de haber importado correctamente tu librería o intenta instalar nuevamente la librería.
  • napoleon

    napoleon 27/08/2016 Responder

    Hola,
    espectacular post!, gracias por la info!
    pregunta,
    tengo una Elego UNO R3 + Display Qpass LCD 2x16 con I2c, sobre Arduino 1.6.9
    solo aparecen la primera letra de cada palabra,
    he descargado ciento de librerías y no he resuelto el asunto
    • Naylamp

      Naylamp 31/08/2016 Responder

      Estimado Napoleón, Ese error puede ser por la librería, intenta con la librería que recomienda Matias en el primer comentario, si no solucionas, prueba con otra versión del IDE de Arduino para descartar que sea tu compilador
      • Napoleon

        Napoleon 02/11/2016 Responder

        Gracias!!!,
        funciono de la siguiente forma:
        entre a la carpeta donde estan las librerias en la carpeta Arduino, borre todas las librerias y reinstale la libreria sugerida, y funciono!
  • pedro

    pedro 05/08/2016 Responder

    Hola Naylamp:Tengo un arduino mega y unaLCD con I2C, he comiado tu codigo y me funciona pero solo me sale en la pantalla la primera letra del texto la W en la primera fila y la T de la segunda fila.¿En que estoy equivocandome?,¿que
    es lo que me falta?.
    Soy nuevo en esto de arduino y mis conocimientos son pocos por ahora hasta que vaya aprendiendo.Que con tutoriales como el tuyo los que estamos metiendonos en este mundo de arduino nos hace mucho bien y nos ayuda un monton.
    GRACIAS Y UN SALUDO,
    Pedro lopez
    • Rafa_RGB

      Rafa_RGB 02/07/2017 Responder

      Hola Pedro,

      Me llegaron hace unos días las backplates y displays 20x4 de China.
      He estado varios días igual que tú, con sólo el primer caracter en cada línea...

      La dirección de las "mochilas" en mi caso es0x3F, así que OJO y usad I2CScan para buscar en cada caso, no sea que también sufráis con esto.( Como hice yo.... 8( )

      La solución al trexto ha sido DESCARGAR el zip que referenciaba Matías y ha empezado a funcionar todo como una reloj suizo.


      NOTA:
      Siento el "reflote".
    • Naylamp

      Naylamp 12/08/2016 Responder

      Hola pedro, ¿cuál de los programas es el que te está fallando, o en todos los ejemplos del tutorial tienes el mismo error? , si estas usando un lcd diferente al LCD de 16x2 tienes que modificar dichas dimensiones en el código. Si el error te sale en todos los ejemplos también puede ser que esté fallando la libraría, prueba con la librería del comentario de Matías (cometario anterior)
  • Matias

    Matias 18/07/2016 Responder

    Hola que tal? Saludos desde Argentina. Primero que nada muchisimas gracias por la creacion de este contenido. A mi parecer, el mejor blog de habla hispana de Arduino entre todos los que conozco por su gran diseño web en el buscador de contenido y la facil y detallada explicacion!
    Envio este mensaje ademas, porque resulta que la libreria que descargué en este tutorial, solamente me imprimia en el display la columna 0. Reemplace la libreria por la del link a continuacion https://codeload.github.com/marcoschwartz/LiquidCrystal_I2C/zip/master y sin cambiar absolutamente NADA me anduvo perfectamente.
    Saludos y segui asi!!
    • Leonardo

      Leonardo 24/04/2020 Responder

      Muchas gracias por la info. Me pasaba exactamente lo mismo. Solo me mostraba la primera letra de la palabra. Elimine la Libreria y la instale de nuevo y se arreglo el problema. Saludos desde Chile. Lo probe con display de 16x2 y 20x4 con Arduino Uno y Arduino Leonardo.
    • Gustavo Solano

      Gustavo Solano 02/10/2017 Responder

      Gracias por ese aporte Matias.
    • emerson

      emerson 31/08/2016 Responder

      Hola amigo, me esta pasando exactamente lo mismo, pero descargue la libreria que pusiste y me sigue pasando lo mismo solo me imprime la primera letra. tendras alguna otra solucion porsiacaso ?
      • Gustavo

        Gustavo 03/10/2017 Responder

        Anda a "mis documentos" o "documentos" y borra la primer librería que instalaste, por mas que la borres de arduino/librerias quedan en mis documentos, no se porque carajo se copian ahí también,, GRACIAS MATIAS
      • ivan

        ivan 11/05/2017 Responder

        Consigue una version de ide menor a la actual a mi con la 1.5.7 me funciona
    • Naylamp

      Naylamp 20/07/2016 Responder

      Hola Matias, gracias por el comentario, estaremos revisando la librería del tutorial. Seguiremos desarrollando nuevos tutoriales, saludos desde Perú.
Dejar un comentario
Deja su comentario

Menú

Ajustes

Crear una cuenta gratuita para usar listas de deseos.

Registrarse