I2C Screen LCD doesnt work on SparkFun LoRa Thing Plus expLoRaBLE

Hi Someone please help, I’m trying to use a 20x4 I2C LCD with my SparkFun LoRa Thing Plus expLoRaBLE. The screen works perfectly when I connect it to my Arduino Nano ESP32, but when I connect it to the LoRa Thing Plus the backlight turns on and no text appears on the screen.

BOARD MANAGER I USED (Apollo3) https://raw.githubusercontent.com/sparkfun/Arduino_Apollo3/master/package_sparkfun_apollo3_index.json and I select the (LoRa Thing Plus expLoRaBLE) I’m not sure if thats the board I should be selecting Someone please help.

What I tried:

Wiring
GND → GND
VCC → 5.V(VUSB)
SDA → 17
SCL → 16

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup() {
Wire.begin();
lcd.init();
lcd.backlight();

lcd.setCursor(0,0);
lcd.print(“Hello World”);
}

void loop() {
}”

Arduino IDE
Board selected: SparkFun LoRa Thing Plus expLoRaBLE
Using Wire.begin()

Other things I tested

  • Tried I2C address 0x27

  • Tried I2C address 0x3F

  • The same code works on the ESP32 but not on the LoRa board

Question:
Are pins 16 and 17 the correct I2C pins for this board, or does the Apollo3 require a different setup or library to use an I2C LCD?

Any help would be appreciated or anything had this issue and found the solution. Thanks!

Looks you need to change the connections. Connect SDA to pin 16, SCL pin 17

That board is a bit funky, its default i2c is assigned to the qwiic connector and D14 SDA, D15 SCL

Those pins are only broken-out at the qwiic connector…and the qwiic connector outputs 3.3v, so trying to use a qwiic → 4 wires → LCD won’t work if the LCD needs 5v :-/

So my suggestion is to try using the above suggestion (re-wire SDA to 16 & SCL to 17) but you’ll probably need to use a software i2c, something like GitHub - Testato/SoftwareWire: Creates a software I2C/TWI bus on every pins · GitHub

I had another look about my advice and TS-Russell is correct that Qwiic is the primary Wire. On pin16 and 17 is Wire1 allocated. I have looked at a number of libraries that contain LiquidCrystal_I2C.h on github but none of them does allow selecting Wire1 from the sketch. As alternative to TS-Russell advice, can you share (a link - name- to) the library you use. I can try to adjust it to select Wire1.

1 Like