LCD Not Working

Hello. I am trying to display to an LCD using my Arduino UNO but nothing is being displayed to the screen. I am afraid that my UNO is fried. The library I am using for the example code is called "BigCrystal" on the Arduino IDE library search bar. Here is the code. I have a photo of what the LCD is doing attached.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <BigCrystal.h>

LiquidCrystal_I2C lcd(0x27);  // Set the LCD I2C address
BigCrystal bigCrystal(&lcd);

void setup() {
  bigCrystal.begin(16, 2); // Set to your LCD size
}

void loop() {
  // Displays all characters is big front from 0x00 (space) to 0x5A (Z)
  for (char c = 0x20; c <= 0x5A; c++) {
    // Clear out the maximum width so that pars of wider
    // characters are removed
    clear();

    bigCrystal.writeBig(c, 0, 0);
    bigCrystal.setCursor(7, 0);
    bigCrystal.write(c);
    delay(1000);
  }
}

void clear() {
  for (int i = 0; i < 5; i++) {
    bigCrystal.setCursor(i, 0);
    bigCrystal.print('hello');
    bigCrystal.setCursor(i, 1);
    bigCrystal.print('hello');
  }
}

Have you tried a simpler example first, normal letters?

rotated the contrast potmeter?

Verified the I2C address with an I2C address scanner?

I have done many projects using LCD displays. They always look like yours when the address i wrong!

I have tried other libraries with other examples and they all do the same thing. Do you have any recommendations for an I2C address scanner?

How would I go about finding the I2C address?

That should probably be “, not ‘. I.e.

bigCrystal.print(“hello”);

But you’ll note, the original example you started with had a single space character ‘ ‘ in those two statements, because they’re blanking the first 5 character positions…

You’ll find one in your examples folder in the Arduino IDE. It has only rarely failed me. Check for:

File|Examples|Wire|i2cscanner

  • Try 0x3F

Scanner

Using this I was able to verify that the I2C address is 0x27. I would also like to mention that there is no potentiometer on the back of the LCD to control the brightness.

The LCD doesn’t normally have one, rather it’s onboard the I2C interface, usually a separate small board. If that’s missing, then there’s something amuck.


Here’s the back of the LCD

Post a link to technical information on that display. Also post a picture of the front showing what the 4 pins are. They could be I2C or SPI type of interface. Without something to control the contrast it would do what you are seeing.

Ahh. A built-in I2C interface. Not commonly seen here.

If the labels on that 4 pin connection are consistent with I2C, and I expect they will be, then documentation is necessary, to find out how they’re avoiding the need for contrast adjustment.

The Address jumpers (A0/1/2) also are indicative of I2C. At any rate, yes, let’s see the other side as well, there may be hints there.

Maybe. I don’t know this display, but the ones I’ve worked with have this more as a problem of initialization than contrast. When the display is correctly initialized and the contrast voltage is wrong, all rows show the same.

See if your library needs to be configured with this...

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

And initialized with this...

void setup() {
  lcd.init();

Then try it adding BigCrystal