lcd i2c problem

hi guys , i have a problem with this code , nothing prints out to the lcd using i2c , the address is correct , anyone knows why? >:(

/*-----( Import needed libraries )-----*/
#include <Wire.h>  // Comes with Arduino IDE
// Get the LCD I2C Library here: 
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>

/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 16 chars 2 line display
// A FEW use address 0x3F
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

/*-----( Declare Variables )-----*/
//NONE

void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);  // Used to type in characters

  lcd.begin(16,2);   // initialize the lcd for 16 chars 2 lines, turn on backlight

// ------- Quick 3 blinks of backlight  -------------
  for(int i = 0; i< 3; i++)
  {
    lcd.backlight();
    delay(250);
    lcd.noBacklight();
    delay(250);
  }
  lcd.backlight(); // finish with backlight on  

//-------- Write characters on the display ------------------
// NOTE: Cursor Position: (CHAR, LINE) start at 0  
  lcd.setCursor(0,0); //Start at character 4 on line 0
  lcd.print("Hello, world!");
  delay(1000);
  lcd.setCursor(0,1);
  lcd.print("HI!YourDuino.com");
  delay(8000);  

// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
  lcd.clear();
  lcd.setCursor(0,0); //Start at character 0 on line 0
  lcd.print("Use Serial Mon");
  lcd.setCursor(0,1);
  lcd.print("Type to display");  


}/*--(end setup )---*/


void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  {
    // when characters arrive over the serial port...
    if (Serial.available()) {
      // wait a bit for the entire message to arrive
      delay(100);
      // clear the screen
      lcd.clear();
      // read all the available characters
      while (Serial.available() > 0) {
        // display each character to the LCD
        lcd.write(Serial.read());
      }
    }
  }

}/* --(end main loop )-- */


/* ( THE END ) */

How did you verify that the address is correct?

OldSteve:
How did you verify that the address is correct?

i scanned the address using a i2c scanner sketch and as i said the lcd backlight blinks

alialsaffar:
i scanned the address using a i2c scanner sketch

No problem. I had to ask.

and as i said the lcd backlight blinks

Don't look now, but you didn't say that at all.

Is it possible that the pins aren't as stipulated in the lcd constructor? Without bothering to look further, everything in 'setup()' looks OK to me, so it should be printing. (And they are the same pins as my I2C LCD display.)

Edit: Have you adjusted the contrast pot?

OldSteve:
No problem. I had to ask.

Don't look now, but you didn't say that at all.

Is it possible that the pins aren't as stipulated in the lcd constructor? Without bothering to look further, everything in 'setup()' looks OK to me, so it should be printing. (And they are the same pins as my I2C LCD display.)

Edit: Have you adjusted the contrast pot?

i did adjust the contrast pot , i think the problem is in the pin numbers , i tried using another people pin numbers but nothing good happens, any ideas?

alialsaffar:
i did adjust the contrast pot , i think the problem is in the pin numbers , i tried using another people pin numbers but nothing good happens, any ideas?

Sorry, since the pin numbers in your constructor are the same as mine, I wouldn't know what to suggest as another layout to test.

Maybe someone else can come to the rescue with a suggestion. Good luck. :slight_smile:

N.B. A picture of or link to your particular LCD display or I2C backpack might shed some light.

Did you read this link?
I had similar troubles some months ago when I started with Arduino and LCD and I found out, it very much depends what kind of I2c adapter you bought.

I found out, it very much depends what kind of I2c adapter you bought.

You have correctly identified the display address with the i2c scanner and are using the F.Malpartida library.

There is another program called the i2cLCDguesser written by Bill Perry which will determine the constructor for pcf8574 based hd44780 backpacks.

Read the instructions,

i2cLCDguesser.ino (12 KB)