Once the FET/B0 Jumper is shorted, the following commands will work...
Don't do this! It's for something totally unrelated (allowing you to use the FET not to gate USB power, but to control other stuff). But because you're using USB you need it non-shorted.
My memory of the HD44780 boards is that generally the I2C actually worked ok at 3.3v, and the backlight lit up, but nothing was displayed on the screen - hence the need for 5v. But the 4.4v you have should be fine. I've used those exact displays on the Pico before without issues.
I guess it might be that you need the pullup resistors to 3.3v, now it's running from 5v?
Even before you add pullup resistors, please could you try:
var i = new I2C();
i.setup({scl:B6, sda:B7});
// PCF8574AT based IO expanders default to address 0x3F
var lcd = require("HD44780").connectI2C(i, 0x3F);
lcd.print("Hello World!");
also try changing the 0x3F to 0x27 if that doesn't work (just in case).
Software I2C can use the chip's internal pullup resistors, and so may be more able to communicate properly.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Don't do this! It's for something totally unrelated (allowing you to use the FET not to gate USB power, but to control other stuff). But because you're using USB you need it non-shorted.
My memory of the HD44780 boards is that generally the I2C actually worked ok at 3.3v, and the backlight lit up, but nothing was displayed on the screen - hence the need for 5v. But the 4.4v you have should be fine. I've used those exact displays on the Pico before without issues.
I guess it might be that you need the pullup resistors to 3.3v, now it's running from 5v?
Even before you add pullup resistors, please could you try:
also try changing the
0x3F
to0x27
if that doesn't work (just in case).Software I2C can use the chip's internal pullup resistors, and so may be more able to communicate properly.