16 x 2 character I2C LCD display

Recently imported some Backlit LCD displays, white on blue.They are Generic 16 character by 2 line displays, showing text white on a blue background by using a white backlight.

While these displays can be linked directly to an Arduino , Raspberry Pi or similar, these use the I2C bus system.

I2C is also known as two wire, and is a serial bus that uses only two wires for transmitting data and controlling devices.

All I2C devices have an address on the bus, which must be different for each device. most of the  units I have bought so far have come with a default address 0x3F, although one had a default of 0x27. They have 3 sets of solder pads (A0-2)  that, when bridged, add 10K pull-up resistors to change the address.

They have a jumper to disable the backlight, but of course the characters are then not visible. They also have a potentiometer to adjust the backlight intensity,

This is the sketch I used to test them with an Arduino Uno:

/*—–( Declare Constants )—–*/
/*—–( Declare objects )—–*/
// set the LCD address to 0x3F for a 16 chars 2 line display
// 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(“Hello World”);
  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(“start typing now”);
  lcd.setCursor(0,1);
  lcd.print(“LCD display test”);  

}/*–(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 ) */