LCD I2C - lcd displays nothing!! for a week

This does not print anything on my LCD
Only backlight works well

#include <Wire.h>  // Comes with Arduino IDE
#include <LiquidCrystal_I2C.h>


LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address


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 ) */

Oh! sorry
My week was just consumed by 'contrast'!

When I turned the blue white '+' everything solved!!!!!!
Happy day

Great you got it to work.

The contrast thing is one of the most common issues besides of bad soldering.

If your board had a PCF8574A mounted, the Slave addresses are 0x38 .. 0x3F
If your board had a PCF8574 mounted, the Slave addresses are 0x20 .. 0x27

Is that a real photo of the actual device on your desk?

In which case, it has a PCF8574 with address lines A0, A1, A2 "not shorted to GND"

So the Slave address is 0x27. e.g. your constructor would be

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

Since you have spent a week of frustration, next time do a search for "I2C sniffer"
This sketch will diagnose which chip is on your adapter and what constructor you should use.

Yes, Adapters with PCF8574A do exist. They are not very common.
Please could you examine the chip markings on your Adapter.

David.

I reckon that the 1602 LCD designer should have designed the 'default' contrast to be a value that gives a readable display (by default). That's where they (the 1602 designer/manufacturer) could have improved things in my opinion. But maybe they did (in the end).

The designer/manufacturer has no control over the setting of the contrast potentiometer.

Don