I2C LCD Backpack for 1602 to 2004 LCDs

Hi all
I have broken my golden rule and purchased a couple of items with little or no information. One is the device above. Can’t even establish a manufacturer to try there for info.

On the product page there isn’t even an operating voltage. Assuming it is supposed to be compatible with any Arduino I assume it to be 5V.
I tried the link to * Arduino IDE Example but all I get ia a Page not Found error on both Safari and Firefox.

I get nothing with 2 LCD 1602 displays, although fairly old they both work when wired directly to an Arduino with no IcC. It could be an address problem. I know there is a way to establish which if any I2C devices are connected and what their address are but I can’t find it. Can anyone please point me in the right direction.

There are 3 links can be made with solder labeled A0, A1, and A2. What are these please. Maybe one has to be made, with the available info I have no chance of finding out.

Thanks in anticipation
Cheers Bob
EDIT. I have found the sketch that scans for I2C devices and can confirm this device is located with the address 0x27.

2 Likes

They are for address select if 0x27 is not suitable for some reason. It is explained here:
How to use LCD LCD1602 with I2C module for Arduino - Robojax - YouTube

The response you are getting to the bus scan is from the adapter and unfortunately tells you nothing about the display. About the only way to look into the problem will be to examine different library drivers to see what they are doing and whether they include any comments about odd variants of the 1602, and then to step through the initialization code using debugging statements to see if there is any feedback available that indicates where it is failing.

Not all 1602s are created equal. For instance, I have one ‘1602’ that has to be initialized as a different format (8 x 2, IIRC) and custom code written to get to the right hand end of each row.

2 Likes

Hi Bob,

I’ve sent some feedback regarding the link to the Arduino library.

I did some further digging and the chip featured on the board is an I2C GPIO Expander: https://www.farnell.com/datasheets/1716973.pdf
The power supply is quoted as 2.5-6V with the inputs being rated as Vdd + 0.5V.

Without the relevant I2C 16x2 library the Arduino won’t be able to drive the displays, installing the one below should get them working.
The library from the video @Jeff105671 linked can be found here: GitHub - fdebrabander/Arduino-LiquidCrystal-I2C-library: Library for the LiquidCrystal LCD display connected to an Arduino board.

The overall system would end up looking something like this board: RGB LCD Shield Kit w/ 16x2 Character Display - Only 2 pins used! - POSITIVE DISPLAY | Adafruit ADA716 | Core Electronics Australia

Schematic
The MCP23017SP2 is another I2C GPIO expander and that’s being routed to the LDC’s IO pins

Test EDIT

1 Like

@Robert93820 's reply:

Hi Jeff and All

Fixed it.

This unit apparently did not like the library “LiquidCrystal_LCD”. I got it working in a sort of a fashion but could only display the first character on any line. That is the characters at 0,0 and 0,1.

I eventually found a library “LiquidCrystal_PCF8574” and got that all installed. At first it stalled at "LiquidCrystal_PCF8574 lcd(0x27,16,2)” and after trawling through the error messages I found an interesting bit that this expected 1 argument but found 3.

Now this package has a test sketch which worked perfectly so I was able to compare the 2 and isolate differences. The solution was to remove the “16,2” from there and change the normal “lcd.int()” with “lcd.begin(16,2)”.

What do you know. The whole thing works perfectly. Thanks Jeff, Liam and anyone else that was interested.

Cheers Bob

1 Like

Hi Jeff and All
Fixed it.
This unit apparently did not like the library “LiquidCrystal_LCD”. I got it working in a sort of a fashion but could only display the first character on any line. That is the characters at 0,0 and 0,1.

I eventually found a library “LiquidCrystal_PCF8574” and got that all installed. At first it stalled at "LiquidCrystal lcd(0x27,16,2) and after trawling through the error messages I found an interesting bit that this expected 1 argument but found 3.

Now this package has a test sketch which worked perfectly so I was able to compare the 2 and isolate differences. The solution was to remove the “16,2” from there and change the normal “lcd.int()” with “lcd.begin(16,2)”.

What do you know. The whole thing works perfectly. Thanks Jeff, Liam and anyone else that was interested.
Cheers Bob…

1 Like

Hi to Forum people.
I was having trouble with this thread in that I could not post a reply or cancel it. Also this reply box stayed on screen and I could not reply to anything else until I exited the Forum and re connected. This was the same on Safari, Firefox and a second computer using Chrome. If I did not open my own thread all other replies were normal.

Liam 120347 messaged me and offered to post the reply for me which he kindly did. I was just now about to contact Core about this and found all is working normally again. That is the reason for the double reply above.

Has Core actually fixed a problem or is all just a coincidence. Would be nice to know so if somebody knows could you please respond. Thanks.
Cheers Bob

EDIT: Add on.
Jaycar also market this device, Cat no XC 3706. Their description is more informative and refers to the library “LiquidCrystal_PCF8574”, Also the default I2C address and the use of solder jumpers A0, A1, and A2.

1 Like