I2C LCD 16x2 enciende pero no muestra nada.

Hola, amigos. Soy una Arduinoob con el siguiente problema.
Compré una pantalla LCD de 16x2 que venía acompañada de un I2C a través de una página china.
Sé que se ha hablado bastante del tema pero yo aún no consigo una solución. Intenté lo que vi en cada post y video un par de veces y aún nada...
Lo único que puedo hacer es que la pantalla se encienda y apague (Según el tiempo que desee) pero ningun carácter. Está todo el tiempo la primera línea (superior) en blanco y la inferior en negro (lo que creo que está hecho para probar el contraste)
Probé siguiendo al pie de la letra lo indicado en este
POST1 y este POST2 post.
Con el último logré encenderla y apagarla y saber que la documentación es de 0x27 (según aquel escaner)
De verdad estoy desesperada, no sé qué más hacer :sob:
Espero que alguien pueda ayudarme, desde ya, gracias.

Yo uso mucho lcd i2c. Si ya conoces la dirección i2c con el scanner, mi primer consejo es que uses la librería de fmalpartida. La puedes descargar de aqui:

https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/LiquidCrystal_V1.2.1.zip

Quita la librería de lcs i2c que tengas ahora, e instala esta en el directorio "C:\Users\nomreusuario\Documents\Arduino\libraries" donde la parte de nombreusuario, sera tu nombre se usuario en windows.

Dentro del zip, descomprime solo la carpeta "LiquidCrystal" en el directorio que te dije antes, y renombrala como "LiquidCrystal_i2c". Este paso es muy importante, para que no entre en conflicto con la librería que lleva de serie el ide.

Una vez tengas la librería intalada, prueba este código:

//Librerias para LCD I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//Init LCD
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup() {
  //Init LCD
  lcd.begin(16, 2);
  //Mensaje
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print (F("Linea 0"));
  lcd.setCursor(0, 1);
  lcd.print (F("Linea 1"));
}
void loop() {
}

Mira te paso mi codigo con el que la hice trabajar funciono perfectamente aunque igual checa el potencionetro del modulo i2c,

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

LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
Wire.begin();
lcd.backlight();
lcd.init(); 
}
void loop() {

lcd.clear();
lcd.setCursor(0,0);
lcd.println("H: "); 
lcd.setCursor(0,1);
lcd.println("T: ");
delay(2000); //Se espera 2 segundos para seguir leyendo //datos
}

La verdad es que la librería de fmalpartida era la que estaba utilizando y aquí adjunto el código. De todos modos gracias, estaré probando los códigos de ustedes :smiley:

/*
** Example Arduino sketch for SainSmart I2C LCD2004 adapter for HD44780 LCD screens
** Readily found on eBay or http://www.sainsmart.com/ 
** The LCD2004 module appears to be identical to one marketed by YwRobot
**
** Address pins 0,1 & 2 are all permenantly tied high so the address is fixed at 0x27
**
** Written for and tested with Arduino 1.0
** This example uses F Malpartida's NewLiquidCrystal library. Obtain from:
** https://bitbucket.org/fmalpartida/new-liquidcrystal 
**
** Edward Comer
** LICENSE: GNU General Public License, version 3 (GPL-3.0)
**
** NOTE: TEsted on Arduino NANO whose I2C pins are A4==SDA, A5==SCL
*/
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x27  // Define I2C Address where the PCF8574A is
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

int n = 1;

LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void setup()
{
  lcd.begin (16,2);
  
// Switch on the backlight
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH);
  lcd.home ();                   // go home

  lcd.print("jejejej");  
  lcd.setCursor ( 0, 1 );        // go to the 2nd line
  lcd.print("holalala");

  lcd.print("Iteration No: ");
}

void loop()
{
  // Backlight on/off every 3 seconds
  lcd.setCursor (14,3);        // go col 14 of line 3
  lcd.print(n++,DEC);
  lcd.setBacklight(LOW);      // Backlight off
  delay(10);
  lcd.setBacklight(HIGH);     // Backlight on
  delay(3000);
}

lcd_ON_OFF.ino (1.56 KB)

mastero101, qué librería utilizaste tú?
No funciona con la de fmalpartida :c
Aun no logro que funcioné, de todos modos gracias.

¿No funciona mi código con la librería de fmalpartida? Pues entonces, mira que el potenciómetro del contraste está ajustado correctamente.

A mi me funciona con unos como estos:

Sin entrar más en profundidad, veo que cotecastilla pone dos includes:

#include <LCD.h>
#include <LiquidCrystal_I2C.h>

¿No sobraría el LCD.h?

Si, sobra el include del lcd.h

Ni miré su código, porque es muy habitual usar códigos no válidos para la librería que se está usando, y directamente, puse uno que se que funciona.

Yo adquirí una hace una semana con el módulo que nombra carmeloco:

En su momento me pensaba que la había quemado (fue mi primera soldadura de estaño) al final resultó que era el contraste, yo probaba por ese camino antes de hurgar más en el código.

Me pasa lo mismo: parte superior en blanco. Igual que la foto que mandó Cotecastilla. He leído todos los mensajes y no me ha quedado claro si al final consiguió que funcionase la pantalla

Te pasa lo mismo pero desde el 09-08-2015, 18:07:06 nadie responde, si te quedas esperando vas a tirar tu LCD al tacho de basura de modo que aprende a no responder hilos que no tengan movimiento en mas de 120 dias o sea 4 meses y ni hablar de algo de 2 años.
Crea un nuevo hilo y espera a ser respondido.
De paso lee las normas del foro, se nota que no lo has hecho

Hola amigos tengo un problema con mi lcd, lo que pasa es que he comprado un i2C para poder ahorrar pines, lo que pasa es que solo aparecen cuadros blancos y azules, he intentado con todas las librerías que han explicado anteriormente adjuntaré foto y el código

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

// Set the LCD address to 0x27 for a 16 chars and 2 line display 
LiquidCrystal_I2C lcd(0x27, 16, 2);

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...
}

Tambien he intentado con LiquidCrystal_I2C lcd(0x20, 16, 2);

Y todas las otras librerias.

Espero que me ayuden porfavor gracias

Yo tengo estas mismas conexiones

proba en el codigo cambiar 0x27 por 0x3f. me volvi loco hasta q encontre la solucion

Estan reviviendo un hilo del 2015.
Ya advertí que no siguieran y continúan dialogando.
Daré por terminado el mismo.