LCD Salvage Help • Old Air Compressor

Hello, drawing a blank on this one.

Was removed from an old compressor. Had a ribbon cable intact so I stuck an I2c in and was able to scan it with my Arduino Uno (0,27). However the contrast pot is not producing any changes on the screen (no blocks). I've sent it a hello world sketch and got the monitor to blink, which usually indicates that the sketch has gotten through, but once again think I'm running into a contrast issue.

I don't see any visible damage at all. I have read other threads and the general consensus seems
that if you can't get blocks or contrast to shift it means it's damaged somehow.

IMG_20210713_213551

Thank you for your time.

It looks like you have connected the backpack backwards.

Identify the backlight pins. Identify the VCC, GND pins. Hint. Compare with a regular 16x2 module. Follow the copper traces to backlight LED.
Not all modules have this on 15,16. Some have this on1,2 with GND,VCC on 3,4. Which means you line up backpack with GND,VCC and hand-wire the LED.

David.

If you just used an I²C scanner, then you scanned the backpack and not the LCD. If you used Bill Perry's I²C diagnostic from the "HD44780" library installed from the IDE, then you could get a report as to whether the LCD actually responded.

What "monitor" is this? Do you mean the backlight? If the backlight blinked the backpack might be wired correctly but ...

The interesting thing about the 16 pin connector on a standard "1602" display is that the ground and power connections are symmetrical on the ends powering the LCD driver and the backlight, so if you connect it backwards, no damage will result and the backlight will light up - but not blink.

I missed the "blink". That implies that the backpack is connected the right way around.

The backpack looks like a regular type with DB4-DB7 on P4-P7 and pullups on the pcb.

Run Bill Perry's diagnostic sketch from his hd44780 library.
Copy-paste the output to your message.

All of the other "LiquidCrystal_I2C" libraries rely on either luck or guesswork.

David.

Hi @rifle_eyes
to reduce the electronics involved in testing, first run a simple test by plugging the LCD directly into the Arduino.
And run the example "HelloWorld.ino".

Inside this sketch shows how to connect the LCD.

If it works then proceed by correctly installing the I2C module and testing it with your I2C Sketch.

RV mineirin

Frankly, using the I²C module (with the HD44780 library) is simpler and probably more reliable. :roll_eyes:

First of all thank you to everyone who responded. I've heard very positive things about this community. Sorry It took a few days for me to get back, but wanted to have everything laid out in front of me the next time I do.

That's correct, If i place the I2c on one way: the backlight will light up bright.
If I place it on the other way, it still lights up - but much more dimmer.

You both mention a "diagnostic sketch" from his library, as to which sketch in specific I'm a little lost on. Is it in ioClass or the OtherLibarary?

This might be the route I'm going to have to take. From what I've understood if I'm unable to play with the contrast on the I2C & have failed to produce blocks on the backlight, I might as well disconnect it. I'll have to break out some more jumper cables and gather some more patience, I'll let you know how this goes.

Oh, and thought I'd mention that there are two other areas on the LCD I can power it from.
•There's a + - on the right hand side
•They are on the left side as well, accompanied by two soldering points above and below it.

I've tried both and they each manage to light the screen up.

Thanks everyone, cheers. :beer:

Do be cautious as you may be bypassing the current limiting resistor for the backlight LED!

Test any Chinese jumper cables you use.

Wait for someone who has used it (as I have not so far), to explain which is the test routine from the HD44780 library, though it should be self-explanatory in the I²C class examples.

If the display connections do not correspond to the standard I²C backpack, then jumpering it directly to the Arduino will not work either. That's why I say that using the I²C module (with the HD44780 library) is simpler and probably more reliable.

But the point is that you have the display and we don't. Fully focused, detailed photos taken in outside daylight of both sides of the display would facilitate analysis.

The diagnostic is called I2CexpDiag.ino and is found here:
C:\Users\ ...\Documents\Arduino\libraries\hd44780\examples\ioClass\hd44780_I2Cexp\I2CexpDiag\I2CexpDiag.ino

Obviously you load into the IDE with File->Examples->hd44780 and select ioClass\hd44780_I2Cexp\I2CexpDiag

Install hd44780 via the IDE Library Manager.
Bill Perry has lots of documentation and several examples.

The diagnostic is worth its weight in gold.
But the regular use of hd44780 is very simple:

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

hd44780_I2Cexp lcd; // declare lcd object: auto locate & auto config expander chip

Paul_B has good advice about Chinese jumpers. test them for breaks.

Good Luck. Please report back.

David.

I think I need to write a tutorial about testing them.

The general suggestion is that when you get a pack, you take a MB102 and plug the first jumper between one end and halfway along (the columns, that is :grin:). Then the next between the end of the first and the second column, the next between that second column and the one just beyond the halfway and so on. So you zigzag them all into a big chain until you have just a couple left which you (first test then) use to connect to ground on one end and a LED and series resistor to your 5 V at the other.

If the LED lights and does not flicker when you stroke the bundle of wires, all good!

If not, you figure out the halfway point in the chain and test each half, breaking the chain up and disassembling sub-chains which actually work (and at any point of course, neither sub-chain may work) until you find the culprit(s) which frankly, you can chop into minuscule pieces before binning :rofl:

Got it, thanks - the sketch worked. I received:



Serial Initialized

I2CexpDiag - i2c LCD i/o expander backpack diagnostic tool

hd44780 lib version: 1.3.2

Reported Arduino Revision: 1.8.15
CPU ARCH: AVR - F_CPU: 16000000

SDA digital pin: 18 A4
SCL digital pin: 19 A5

Checking for required external I2C pull-up on SDA - YES
Checking for required external I2C pull-up on SCL - YES
Checking for I2C pins shorted together - Not Shorted

Scanning i2c bus for devices..
i2c device found at address 0x27
Total I2C devices found: 1

Scanning i2c bus for all lcd displays (4 max)
LCD at address: 0x27 | config: P45601237L | R/W control: Yes
Total LCD devices found: 1

LCD Display Memory Test
Display: 0
Walking 1s data test:
Compare error: addr: 0 read 22 != wrote 1
Compare error: addr: 0 read 22 != wrote 2
Compare error: addr: 0 read 22 != wrote 4
Compare error: addr: 0 read 22 != wrote 8
Compare error: addr: 0 read 22 != wrote 10
Compare error: addr: 0 read 22 != wrote 20
Compare error: addr: 0 read 22 != wrote 40
Compare error: addr: 0 read 22 != wrote 80

Compare error: addr: 40 read 22 != wrote 1
Compare error: addr: 40 read 22 != wrote 2
Compare error: addr: 40 read 22 != wrote 4
Compare error: addr: 40 read 22 != wrote 8
Compare error: addr: 40 read 22 != wrote 10
Compare error: addr: 40 read 22 != wrote 20
Compare error: addr: 40 read 22 != wrote 40
Compare error: addr: 40 read 22 != wrote 80

Compare error: addr: 10 read 22 != wrote 1
Compare error: addr: 10 read 22 != wrote 2
Compare error: addr: 10 read 22 != wrote 4
Compare error: addr: 10 read 22 != wrote 8
Compare error: addr: 10 read 22 != wrote 10
Compare error: addr: 10 read 22 != wrote 20
Compare error: addr: 10 read 22 != wrote 40
Compare error: addr: 10 read 22 != wrote 80

Compare error: addr: 50 read 22 != wrote 1
Compare error: addr: 50 read 22 != wrote 2
Compare error: addr: 50 read 22 != wrote 4
Compare error: addr: 50 read 22 != wrote 8
Compare error: addr: 50 read 22 != wrote 10
Compare error: addr: 50 read 22 != wrote 20
Compare error: addr: 50 read 22 != wrote 40
Compare error: addr: 50 read 22 != wrote 80

FAILED
Address line test:
Compare error: addr: 0 read 72 != wrote 0
Compare error: addr: 1 read 22 != wrote 1
Compare error: addr: 2 read 22 != wrote 2
Compare error: addr: 3 read 22 != wrote 3
Compare error: addr: 4 read 22 != wrote 4
Compare error: addr: 5 read 22 != wrote 5
Compare error: addr: 6 read 22 != wrote 6
Compare error: addr: 7 read 22 != wrote 7
Compare error: addr: 8 read 22 != wrote 8
Compare error: addr: 9 read 22 != wrote 9
Compare error: addr: B read 22 != wrote B
Compare error: addr: C read 22 != wrote C
Compare error: addr: E read 22 != wrote E
Compare error: addr: F read 22 != wrote F
Compare error: addr: 10 read 22 != wrote 10
Compare error: addr: 11 read 22 != wrote 11
Compare error: addr: 12 read 22 != wrote 12
Compare error: addr: 13 read 22 != wrote 13
Compare error: addr: 14 read 22 != wrote 14
Compare error: addr: 15 read 22 != wrote 15
Compare error: addr: 16 read 22 != wrote 16
Compare error: addr: 17 read 22 != wrote 17
Compare error: addr: 18 read 22 != wrote 18
Compare error: addr: 19 read 22 != wrote 19
Compare error: addr: 1A read 22 != wrote 1A
Compare error: addr: 1B read 22 != wrote 1B
Compare error: addr: 1C read 22 != wrote 1C
Compare error: addr: 1D read 22 != wrote 1D
Compare error: addr: 1E read 22 != wrote 1E
Compare error: addr: 1F read 22 != wrote 1F
Compare error: addr: 20 read 22 != wrote 20
Compare error: addr: 21 read 22 != wrote 21
Compare error: addr: 23 read 22 != wrote 23
Compare error: addr: 24 read 22 != wrote 24
Compare error: addr: 25 read 22 != wrote 25
Compare error: addr: 26 read 22 != wrote 26
Compare error: addr: 27 read 22 != wrote 27

Compare error: addr: 40 read 72 != wrote 40
Compare error: addr: 41 read 22 != wrote 41
Compare error: addr: 42 read 22 != wrote 42
Compare error: addr: 43 read 22 != wrote 43
Compare error: addr: 44 read 22 != wrote 44
Compare error: addr: 45 read 22 != wrote 45
Compare error: addr: 46 read 22 != wrote 46
Compare error: addr: 47 read 22 != wrote 47
Compare error: addr: 48 read 22 != wrote 48
Compare error: addr: 49 read 22 != wrote 49
Compare error: addr: 4A read 22 != wrote 4A
Compare error: addr: 4B read 22 != wrote 4B
Compare error: addr: 4C read 22 != wrote 4C
Compare error: addr: 4D read 22 != wrote 4D
Compare error: addr: 4E read 22 != wrote 4E
Compare error: addr: 4F read 22 != wrote 4F
Compare error: addr: 50 read 22 != wrote 50
Compare error: addr: 51 read 22 != wrote 51
Compare error: addr: 52 read 22 != wrote 52
Compare error: addr: 53 read 22 != wrote 53
Compare error: addr: 54 read 22 != wrote 54
Compare error: addr: 55 read 22 != wrote 55
Compare error: addr: 56 read 22 != wrote 56
Compare error: addr: 57 read 22 != wrote 57
Compare error: addr: 58 read 22 != wrote 58
Compare error: addr: 59 read 22 != wrote 59
Compare error: addr: 5A read 22 != wrote 5A
Compare error: addr: 5B read 22 != wrote 5B
Compare error: addr: 5C read 22 != wrote 5C
Compare error: addr: 5D read 22 != wrote 5D
Compare error: addr: 5E read 22 != wrote 5E
Compare error: addr: 5F read 22 != wrote 5F
Compare error: addr: 60 read 22 != wrote 60
Compare error: addr: 61 read 22 != wrote 61
Compare error: addr: 62 read 22 != wrote 62
Compare error: addr: 63 read 22 != wrote 63
Compare error: addr: 64 read 22 != wrote 64
Compare error: addr: 65 read 22 != wrote 65
Compare error: addr: 66 read 22 != wrote 66
Compare error: addr: 67 read 22 != wrote 67

FAILED
Memory test failures are usually due to poor solder connections
Most common cause is poor solder joints on pins soldered to the LCD


No working LCD devices

So I guess this screen is cooked. (Unless of course it's faulty Jumper Cables). Anything else I should attempt with it?

It is worth copy-pasting your diagnostic report. Please turn off the time-stamps.
This is mine.

********************************************************************
Serial Initialized
--------------------------------------------------------------------
I2CexpDiag - i2c LCD i/o expander backpack diagnostic tool
--------------------------------------------------------------------
hd44780 lib version: 1.3.2
--------------------------------------------------------------------
Reported Arduino Revision: 1.8.13
CPU ARCH: AVR - F_CPU: 16000000
--------------------------------------------------------------------
SDA digital pin: 18 A4
SCL digital pin: 19 A5
--------------------------------------------------------------------
Checking for required external I2C pull-up on SDA - YES
Checking for required external I2C pull-up on SCL - YES
Checking for I2C pins shorted together - Not Shorted
--------------------------------------------------------------------
Scanning i2c bus for devices..
 i2c device found at address 0x21
 i2c device found at address 0x3C
 i2c device found at address 0x50
 i2c device found at address 0x54
Total I2C devices found: 4
--------------------------------------------------------------------
Scanning i2c bus for all lcd displays (4 max)
 LCD at address: 0x21 | config: P01245673L | R/W control: Yes
Total LCD devices found: 1
--------------------------------------------------------------------
LCD Display Memory Test
Display: 0
 LCD stuck BUSY status
--------------------------------------------------------------------
No working LCD devices

0x21 is a PCF8574 Port Expander chip that is not connected to an LCD
0x3C is a SSD1306 OLED display
0x50,0x54 is a 24LC1025 EEPROM

As I said in an earlier post. You should be able to follow copper traces on the LCD module. Identify the backlight pins. Verify that they are on pin 15,16.
Apply power to 1,2 and alter contrast with a variable resistor between 3 and 1

These are easy tests to do. Be realistic. A brand new LCD with backpack is pretty cheap.

David.

Sorry - Edited the post above.

Is a brand new LCD realistically as fun as resurrecting something meant for a landfill?
Depends on the person I suppose. Some prefer cheap thrills, and others even cheaper.

:cowboy_hat_face: