Trouble using Adafruit I2C backpack with 4x20 RBG LCD

It seems like this should work…

According to the folks at Adafruit, I can use their I2C backpack with the Imp and a 5v RGB LCD, as long as I power the backpack from 3.3v separately from the 5v on pin 15 of the LCD; see for specifics).

So I downloaded the CHARLCD class, attached the backpack to i2c89 and - nothing. I ran an i2c scan with the backpack attached, and found it (as expected) at 0x40; I’ve made sure the CHARCLASS is set to 0x20 << 1.

Turns out that, if I carefully adjust the contrast on the back of the backpack, and tilt the display at just the right angle, I can barely make out the text. It reminds me of the time I attached a 5v serial LCD to 3.3v, only worse.

So everything appears to be ok on the Imp side. Do any of you know if (despite the Adafruit forum guy) this is an unsupported combination? Should I just throw a level shifter on the beast and try everything on the display side at 5v?

FWIW, I never got imp + backpack + 5v LCD to work. Fortunately, 3.3v LCDs are not hard to find on eBay, and they do work – as you can see from this project here. If you want to stick with the 5v LCD, I’d try the level shifter.

Thanks for the confirmation. And (FWIW), the level shifter fixed the problem (and your library works beautifully - thanks for that as well). But I’d still like to use a 3.3 display and simplify the wiring; I’ll take a look on eBay for a suitable candidate.

I wasn’t able to get your code working with both a 5v LCD with a level shifter and a 3v LCD. I can turn the backlight on and off but no text is displayed. I tried following this as well but it didn’t work. Any ideas why that might be? Any help would be really appreciated!

What LCD are you using? The code works with the aforementioned Adafruit LCD backpack and a Hitachi HD44780 LCD driver integrated into the display.

The 5V display I used was this one. And the 3.3V display I used was this. I am using the Adafruit LCD backpack was well.

I have have tried i2c12 and i2c89 using the DAT and CLKs pin from the backpack to connect to the SDA and SCL pins on the i2c bus.
i2c.write() returns 0 as well but nothing shows up on the display.