I2C LCD only prints first character of the string

I am sorry but I am a beginner and not yet fully up to speed with all the libs for this (there are many!!) and which might work, etc

I recommend that you install the hd44780 library available through the library manager.

This sketch should get you going

#include <Wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h> // include i/o class header

hd44780_I2Cexp lcd; // declare lcd object: auto locate & config display for hd44780 chip

void setup()
{
  // initialize LCD with number of columns and rows:
  lcd.begin(20, 4);

  // Print a message to the LCD
  lcd.print("Hello, World!");
}

void loop()
{
  lcd.setCursor(0, 1);
  lcd.print(millis() / 1000);
  delay(1000);
}

Read this from the library's creator and display guru Bill Perry from reply #6

Because of all this, I created the hd44780 library.
I should work with any LCD backpack and will automatically configure most backpacks, by locating the i2c address and figuring out the pin mappings.
It can be installed directly from the GUI using the IDE library manager:
https://www.arduino.cc/en/Guide/Libraries
You can read more about it here: GitHub - duinoWitchery/hd44780: Extensible hd44780 LCD library
The i/o class you will use is hd44780_I2Cexp
I would recommend that you run the included diagnostic I2CexpDiag which will test i2c connections and the LCD internal RAM.

1 Like