I2C LCD 3E not responding

Will the hd44780 library work?
I'm not sure but I think that there is a good possibility.
The datasheet, while mostly in Chinese, does not disclose the communication protocol.

I'm guessing that it is possible that it works.
From looking over the 4 python libraries and the Arduino library code in both SPI and IC2 modes, they are all using the same communication protocol.
I'm guessing that the communication protocol used is the same as used by the PCF2119x and PCF2116 chipsets.
As what they are doing is very close to what those chipsets use.
However, if that is the case, then all the libraries I've looked are not doing the proper message for LCD commands. (but it still will would work)

The PCF2119x and PCF2116 used a control byte followed by a data byte.
The control byte uses bit 6 to set the RS pin on the LCD and then there is a LCD data byte that follows this control byte.
The control byte can also indicate whether the byte after ther the LCD data byte is another control byte or another (or multiple) LCD data bytes.

The PCF2119x/PCF2116 chipsets set bit 7 of the control byte to indicate that another control byte follows the LCD data byte.
These libraries always set bit 7 in the control byte of commands but then never send anything but a single control byte followed by a single LCD data byte.
So if this device works the same as the PCF2119x/PCF2116, this would be wrong, but since they only send a single control and single LCD data byte it would still work.

I'm guessing that device uses the same communication protocol and the authors of these libraries didn't implement their code properly. (but it still works)

I would try the hd44780 library.
It is easy to try.
Just install it and use the hd44780_I2Clcd i/o class.
If the communication protocol for this device is the same as the PCF2119x/PCF2116 then the hd44780_I2Clcd i/o class examples should "just work" with no modification.
The library will auto locate the i2c address and then each example will do its thing.

The hd44780_I2Clcd i/o class HelloWorld example shows how to hardcode the i2c address if you want/need to do that.

--- bill

1 Like

Ok,
So I just noticed on the datasheet for this device that it says it uses the AIP31068L chipset.

Here is the datasheet for that is for the AIP31068L chipset which is the same protocol as the PCF2119x/PCF2116.

So yes the chipset on this device appears to use the same communication protocol as the chips I mentioned so I believe that hd44780_I2Clcd i/o class should "just work" with that device.

In fact, this datasheet is what I referenced when I wrote the code for the hd44780_I2Clcd i/o class.

See page 12 of the datasheet for the communication protocol.

Note how the continuation bit works.
You only set the bit if sending more than a single control byte.
They never do that, so, as I suspected, the other libraries are technically not sending the proper message for LCD commands.
They get away with it since they cut off the message the first LCD data byte.

Here is a link to the wiki page for the hd44780_I2Clcd i/o class:

--- bill

Is there a plug & play lcd shield that runs I2C? I'm not in a mood to write a driver. I just want an LCD that works. If you know where to buy hardware that works with no fuss, please let me know.

Did you try the hd44780 library with that display. Here is the path to the Hello World example to try.

To install the hd44780 library. The hd44780 library is the best available for I2C LCDs. The library is available in the Library Manager. Go to Library Manager (in the IDE menus, Sketch, Include Libraries, Manage Libraries) and in the Topics dropdown choose Display and in the Filter your search box enter hd44780. Select and install the hd44780 library by Bill Perry. The class that you will use is the hd44780_I2Clcd.

If it does not work or if you just want a more common I2C character LCD, look for a LCD with an I2C backpack that uses the PCF8574 I2C expander. The hd44780 library works great for those LCDs as well. The library will automatically detect the I2C address and the I2C expander to LCD pin mapping, making using the LCD as near plug and play as possible. For those displays use the hd44780_I2Cexp class. A LCD display with I2C backpack.

If you buy a LCD with I2C backpack and it does not work, in the examples there is a diagnostic sketch that will help us to help you if you still have trouble with the display. Run the diagnostic sketch and post the results.

Your basic problem is, that you need the proper datasheet to your LCD. You should provide a link to it - than we might be able to confirm which library will work. All links in this topic came from other people - but YOU should provide the correct datasheet - than we can advice libraries which support your display.

There are several I2C LC Displays - but all have to be wired correctly and need the correct library. Mostly you don't need to write your own "driver" - just use the right library.

I'm not aware of an I2C Shield (in the sense of plug onto an Arduino Uno).
But there are several I2C LCDs available:

a RGB LCD - but some of these displays are tricky to use and therefore I can't recommend it for beginners.

a OLED based character display which can be used also with I2C. The seller provides a good datasheet and gives support.

There are LCD modules with MCP23017 (a I2C port expander) designed as hat ("shield") for the Raspberry PI . If you connect 4 wires they can be use with the Arduino also.

I don't HAVE the "proper data sheet". I bought it from Jameco and they only have a physical outline and pinout. No data. Nothing in Arduino seems to come with doc's. most everything. like the DHT11, I can find no problem, and the examples (pretty much) work. But i followed your suggestions and get the identical results - nothing.
I've got three LCD's, an Uno and a Mega and NO PERMUTATION seems to work.
I see all these projects using LCD's. I just want to plug and play ANY display. but since NOTHING seems to come with docs I'm flying blind here.
I ordered the LCD with buttons shield, figuring a SHIELD would just plug in, but they're out of stock forever.
So again, can you suggest an AVAILABLE part with KNOWN characteristics to get ANY display going?

Displays of the type that I linked in reply #24 are available from many vendors. They are very common. As well as Amazon, Ebay has lots of them.

Coupled with the hd44780 library they are the closest things to plug and play that you will find. If you can't get that kind of display to work (with our help), I would say that you will need to look for a different hobby.

So you ran the hd44780_I2Clcd HelloWorld example?
Details here really matter.

Saying nothing happened is not an appropriate/useful answer.
Something usually happens.
i.e. the backlight comes on, backlight is blinking/flickering, all the pixels are on, only the top row of pixels are on, garbage pixels showed up, the led on the Arduino board is blinking etc...

What exactly happened when you ran the hd44780_I2Clcd HelloWorld example sketch?

-- bill

The back light comes on. The display shows the test pattern of one row of boxes and a blank row. This is all it has ever done and it does this with only +5v and gnd. When I say "nothing", it is nothing beyond this. It shows no response to any command from any example with any driver other than returning 3E to the I2C_Scanner. It behaves identically on the Uno and Mega. I've scoped the leads at the module and can see activity. The hd44780 diag sees device 3E on A4 & A5 but complains of no resistors on SDA and SCL. I have resistors on order. The diag says no functional LCD devices. I read the diag code and it seems to try to blink the backlight but the display never blinks. The LCD I'm using from Jameco (supposedly) doesn't have/need the I2C backpack. I specifically ordered the +5v version. I'm going to table this until the resistors arrive as that is what the diag is complaining about. We'll see.

The specific device is: Serial SPI I2C 16x2 Character LCD Module with Blue Backlight for Arduino link HERE
What little data sheet there is, is HERE

I2CexpDiag uses the hd44780_I2Cexp i/o class which is not for your LCD device.
It even states this in the comments:

// Sketch to verify configuration & operation of hd44780 LCDs based
// on the Hitachi HD44780 and compatible chipsets using I2C extension
// backpacks that use a simple I2C i/o expander chip.

While it does test the i2c signals, it can not communicate with or test the type of device you have since the device you have not using an i2c backpack such as the common PCF8574 based backpack.

As noted in the datasheet, the device you have appears to use the AIP31068L chipset.
This means that your device should be compatible with the hd44780_I2Clcd i/o class which is why we suggested that you use the hd44780_I2Clcd i/o class.

So what what we are really interested in is what happened when you ran the hd44780_I2Clcd i/o class HelloWorld sketch that you said you ran.

--- bill

No change from power on (backlight, one row blocks, one row blank), no other indications. Again, I get nothing. No blink, no cursor, no text, no change from power on state. If I unplug & replug SDA/SCL during diag loop the 3E appears and disappears correctly. There is a CS lead that the docs say to leave open for I2C. I have left it open, tied high, tied low, and pull up to +5 via 220 ohms. No effect.

You must provide a pull-up resistor on the SDA line so that a slave can answer a call to it. The CS line is not used in I2C operation.

Again, I'm not asking what I2CexpDiag is doing, you shouldn't be running that sketch since it does work on your hardware.
Even if you did run that sketch, the LED on the Arduino board should be blinking an error code of 2 (two short blinks), but you did not say that there was any LED blinking.

As I said before, accurate and full details mater.

I am asking what happens when you run the hd44780_I2Clcd i/o class HelloWorld sketch. You said you ran this as we asked but now you are saying you are running the hd44780_I2CexpDiag sketch.

We asked you to run the hd44780_I2Clcd i/o class HelloWorld sketch and you said you did but nothing happened.
If the datasheet for you device is correct, then this should not be case.

You are saying some things that don't make sense to me.

Please tell us what happens when you run the hd44780_I2Clcd i/o class HelloWorld sketch.
Because based on what I've seen in the datasheet and what you are telling us so far, I'm guessing that either there is some unforeseen issue or you have not run the specific hd44780_I2Clcd i/o class sketch we have asked you to run.

--- bill