I have two LCD 1602 with I2C adapters. These come from two different suppliers and where purchased in different years. I think this is important as I suspect a chip version / library issue.
I've built a quick clock with DHT11, RTC1302 and a rotary encoder.
When using one LCD everything is working fine. When using the second LCD it looks like everything is fine except for certain positions on the screen (mostly every 4th position).
It will display TEMP and sometime it will display TEM or TEM(strange character). After a delay I display HUMID (followed by the value) but sometime it will only write HUM(strange character)D. I use the LCD.clear(); when displaying new information and as mentioned, one LCD is working perfectly.
So one LCD is working fine, the other has strange behaviors. My wishful thinking wants to say that both LCDs are good except one is using a different chipset and the library is not 100% compatible.
Working LCD : PCF8574T K75111 (I2C adapter purchased seperately from LCD and soldered by me) Strange behavior LCD : PCF8574T AZ2629 (KEYESTUDIO kit)
I've tried different LquidCrystal_I2C libraries (I've erased the old libraries before installing newer versions).
I displayed regular text without the BIG FONTS, I still get the same issues.
I would venture a SWAG and say it is a bad solder connection on the intermittent display. If it is in warranty send it back for an exchange or your money back. If not you can try touching the connections with a soldering iron.
The hd44780 library includes support for hd44780 LCDs with those types of backpacks.
It would be interesting to run the I2CexpDiag sketch that comes with the hd44780 library to see if detects any h/w issues.
The hd44780 library is available in the IDE library manager.
It should only take a couple of minutes to install and run.
There is no configuration necessary to run the diagnostic, as the hd44780_I2Cexp i/o class auto locates the i2c address and auto detects the pin mappings used on the backpack(s).
If you run it with both LCDs attached (assuming different i2c addresses), it will test both of them.
Hey Bill! Thanks for the info on the diagnostics sketch. Didn't know it existed. :o
There is definitely something wrong with one of the packpack adapters.
Attached are the outputs of the reliable and unreliable LCDs.
One says there are no PULL-UP resistors on SDA and SCL while the other says there are.
I didn't think I need to add pull-up resistors with a backpack since all examples and tutorials I've seen don't add them.
Second, there is a memory write error. As per the comments in the diagnostics, could very possibly be a bad soldered pin. Even if this was done by the manufacturer, there could be a minor defect in the soldering of one of the pins. I'll take out my magnifying glass to check each one.
Pullups are always required on the i2c signals; it is integral to how it works.
On the AVR based boards, the Wire library will turn on the internal pullup resistors for the pins.
However, they provide a very weak pullup that is way out of spec.
While it can "work", it also can have communications issues since it is out of spec.
I don't see any output - nothing was attached to your post.
I see the attached file now.
First, did you remove any of the output?
This is an important detail.
The one that is not working has and odd behavior.
Bit 0 of the upper nibble is sometimes inverted.
Perhaps it is floating?
If so, that could indicate a soldering issue on either:
hd44780 DB4 pin or pin 11 on the module
PCF8574 P4 pin or pin 9 on the surface mount package.
I would look very closely at those pins for a poor solder connection.
Can you post some clear closeup photos of the soldered pins of the backpack to the LCD
and of the backpack module itself, so we can see the solder on that side of the module and the soldering of the PCF8574 chip.
Those photos are great. Much better than most of what gets posted.
I don't see any soldering issues on the PCF8574 chip or on any of the header pin connections other than one small spot that looks odd.
I attached the photo with the area circled in red. It may just be some kind of reflection in the photo.
This is an interesting one, in that in many years of dealing with this type of device, I've never seen this type of failure.
Unless you can see some type of thread / hair / flux issue on the solder on the DB0 / DB1 / E pins on the LCD module, I don't think this is something that can be fixed. You could try scrubbing those pins with a toothbrush, to see if it helps.
You could try reheating the solder on those pins on both sides of the header to see if it makes any difference.
Ok, so I touched up all the pins to reflow the solder.
I cleaned up what was left of the flux (white markings) and I still get the strange behavior. No luck.
For some people, they might just say, "Forrget it, I'll buy another LCD" as these don't cost much, but where's the fun in that.
I decided to run a small test to write a full block in each of the 32 positions. (look at attached video).
Turns out, that works fine. Then I cleared the LCD and wrote text and there's the problem again. Very strange behavior.
My next step is to de-solder the backpack and try another LCD to rule out the LCD as the culprit.
If I get the same behavior, then it's the backpack for sure.
Yes, it is strange because it is intermittent.
Is the problem always at position 6,0 ?
Or always with the character I ?
Could you try to fill the display with 1 character (so the same character on all 32 positions), wait a bit and then fill it with the next character ?
Try that with every possible character available.
This could point to a problem (addressing) with the character ROM, one of the COBs: the black blobs on the PCB.
The character ROM would not be in use with self defined characters.
However, the "black box" is a character from that ROM.
Paul_B / MAS3 : As Paul had mentionned in post #3, it could well be the COB.
The problem happens in two possitions only. 3,0 and 7,0 only (not 6,0 as you mentionned). It has nothing to do with the character being displayed but the position we're in.
Position 3,0 has the most difficulty, Since the problem is intermittent I can write 32 characters and all will seem good. If I clear the LCD and rewrite the same character again, I may get the issue on position 3,0 and/or 6,0.
Not seing any issue on the soldered pins, my next step is to de-solder de backpack and test another LCD.
Thanks all of you for the support, comments and suggestions. It was much appreciated and quite informative too.
I de-soldered the backpack. Placed it on a breadboard with another LCD...All is working perfectly.
All fingers are pointing to a bad LCD.
But my investigation is not complete. I'll solder header pin on the culprit LCD and do more testing on it.
I'ld like to figure out if I can fix it or not. I guess if it's the COB, there's nothing much I can do.
But what the heck, I've got time and nowhere to go with the COVID curfew .
Is it worth it ?
Thanks to Paul__B and Mas3 and a special thanks to Bill for all the help and knowledge.