LCD I2C Display won't show any characters

Hi, everyone :slight_smile:

I tried literally everything. My connections are fine, the soldering is fine, I’m using a template code and I spent a day reading every troubleshooting thread about this but my display won’t show any characters.

I’ve checked the LCD address (0x27). My current connections are: VCC → 5V, GND → GND, SDA → A4, SCL → A5.

I don’t know if it is possible but sometime I think I can almost see letters but the letters are too bright and cannot be distinguished from the background. (Also tried to hook up a potentiometer but it only toned down the luminosity).

Help, please! I’m new at this! :-![

Your connections and soldering is probably ok.
It sounds like the contrast voltage is off and needs to be adjusted.
There is already a potentiometer on the backpack. It is the blue square with the white circle with a cross/plus in the middle. Turn that and you should see the contrast change.

Which library and how it is configured can affect whether the LCD works or not.
Not all libraries work with all i2c lcd backpacks as lcd backpacks are not all made the same way.
Most libraries hard code the pin mappings used on the backpack. A few allow the pin mappings to be configured.

My hd44780 library can auto detect the pin mappings so it can work with any backpack.
For ease of use,I would recommend my hd44780 library package.
It is available in the IDE library manager so it can quickly and easily be installed from the IDE gui using the library manager.
It can auto detect everything, the i2c address, the pin mappings, and the backlight control.
You can read more about it here: GitHub - duinoWitchery/hd44780: Extensible hd44780 LCD library

The github page contains information about the library including installation instructions.
Use the IDE library manager to install it as it is easier and faster than trying to do it manually or using the zip install.
Also, by using the IDE library manager it ensures that the library is installed properly not to mention that you will also get the latest tested version of the library.

The library package includes support for several different h/w i/o interfaces used to communicate with the LCD module.

Each i/o interface has its own i/o class and its own set of examples.
The examples for each i/o class are grouped together in a directory by the name of the i/o class.
While all the examples are always available regardless of which h/w you actually have, using an example for an i/o class that is for different h/w will not work.
It will compile but obviously will not work.
The i/o class you will want to use for that backpack which contains an i2c i/o expander chip is hd44780_I2Cexp
That i/o class includes a diagnostic sketch (I2CexpDiag) which will test the i2c signals and internal RAM of the LCD module to verify that the the library is properly communicating with the LCD module.
It is useful to first run this sketch to verify that the library is properly talking to your backpack and LCD module.
Read the instructions in the sketch for how to run it and what to expect on the serial monitor.

After running the diagnostic sketch, you can run and look at other sketches for the hd44780_I2Cexp i/o class like the HelloWorld sketch to see what header files need to be included and how to declare the lcd object.

The hd44780 library contains additional capabilities not available in other libraries like

  • return status to tell if API functions are not working correctly (usually do to i2c communication issues)
  • ability to enable automatic line wrapping
  • ability to read the display RAM or LCD status
  • faster than other libraries as Arduino can run in parallel with LCD commands/instructions

I would recommend first running the diagnostic skech I2CexpDiag to verify that everything is working, then you can run and look at the other examples included in the hd44780_I2Cexp i/o class (like HelloWorld) to see the what header files need to be included and how to declare the lcd object.

— bill


I recently bought one of these I2C backpack adapter -LCD displays and had no characters. On the backpack is a pot meter that governs contrast (see picture). With a phillips screwdriver you can turn the dial and change contrast. This may be the culprit.


Thank you very much!!!

The potentiometer solved my problem!! :slight_smile: