Grove 4-Ch Relay I2C thru QT-PY ESP32-s2

Hi, n0()b here hoping I I get the forum rules right.

I have a grove 4-Channel Relay I want to control with a Adafruit QT-Py ESP32-S2 through the I2C stemma port. I know the QTPY and relay both work on their own but I can’t get the “four_channel_realy_control.ino” example to run on the qtpy. Compiling w/ Arduino IDE v2.0.0,

Every time I compile I get the error:
In file included from C:\Users\me\Documents\Arduino\WIFI RELay\WIFI RELay\WIFI RELay.ino:3:
c:\Users\me\Documents\Arduino\libraries\Multi_Channel_Relay_Arduino_Library-master/multi_channel_relay.h:40:50: note: #pragma message: Not match any architecture.
#pragma message(“Not match any architecture.”)
^

It still uploads more or less and I get serial back like it’s running correctly. but nothing happens on the grove.

I though it might be cuz the diff logic levels so I put a logic level converter inline b/t the qtpy and grove board but still nothing.

I’d send a circuit diagram but I can’t upload yet. So here’s something far less useful:

||Grove 4Ch|| <-/->||LogicLevelConv||<-/->||QTPY||

Here’s my code:

#include <multi_channel_relay.h>
#include <Adafruit_BusIO_Register.h>
#include <Adafruit_I2CDevice.h>
#include <Adafruit_I2CRegister.h>
#include <Adafruit_SPIDevice.h>
#include <Adafruit_TestBed.h>



/**
    channle: 4 3 2 1
    state: 0b0000 -> 0x00  (all off)
    state: 0b1111 -> 0x0f   (all on)
*/

Multi_Channel_Relay relay;

void setup() {
    DEBUG_PRINT.begin(115200);
    while (!DEBUG_PRINT);

    // Set I2C address and start relay
    relay.begin(0x11);

    }

void loop() {

    /* Begin Controlling Relay */
    DEBUG_PRINT.println("Channel 1 on");
    relay.turn_on_channel(1);
    delay(500);
    DEBUG_PRINT.println("Channel 2 on");
    relay.turn_off_channel(1);
    relay.turn_on_channel(2);
    delay(500);
    DEBUG_PRINT.println("Channel 3 on");
    relay.turn_off_channel(2);
    relay.turn_on_channel(3);
    delay(500);
    DEBUG_PRINT.println("Channel 4 on");
    relay.turn_off_channel(3);
    relay.turn_on_channel(4);
    delay(500);
    relay.turn_off_channel(4);

    relay.channelCtrl(CHANNLE1_BIT |
                      CHANNLE2_BIT |
                      CHANNLE3_BIT |
                      CHANNLE4_BIT);
    DEBUG_PRINT.print("Turn all channels on, State: ");
    DEBUG_PRINT.println(relay.getChannelState(), BIN);

    delay(2000);

    relay.channelCtrl(CHANNLE1_BIT |
                      CHANNLE3_BIT);
    DEBUG_PRINT.print("Turn 1 3 channels on, State: ");
    DEBUG_PRINT.println(relay.getChannelState(), BIN);

    delay(2000);

    relay.channelCtrl(CHANNLE2_BIT |
                      CHANNLE4_BIT);
    DEBUG_PRINT.print("Turn 2 4 channels on, State: ");
    DEBUG_PRINT.println(relay.getChannelState(), BIN);

    delay(2000);


    relay.channelCtrl(0);
    DEBUG_PRINT.print("Turn off all channels, State: ");
    DEBUG_PRINT.println(relay.getChannelState(), BIN);

    delay(2000);



}

I genuinely hope someone can help us.
I can run the example code on an esp8266 no problem.
I even specified the SDA SCL pins for the stemma, and no luck.
this ESP32-s2 QT Py is a pain it the rear.

#include <multi_channel_relay.h>

/**
    channle: 4 3 2 1
    state: 0b0000 -> 0x00  (all off)
    state: 0b1111 -> 0x0f   (all on)
*/
#define SDA_PIN 41
#define SCL_PIN 40
const int16_t I2C_MASTER = 0x0;
const int16_t I2C_SLAVE = 0x11;


Multi_Channel_Relay relay;

void setup() {
    Wire.begin(SDA_PIN, SCL_PIN, I2C_MASTER);  // join i2c bus (address optional for master)
    DEBUG_PRINT.begin(115200);
    while (!DEBUG_PRINT);

    // Set I2C address and start relay
    relay.begin(0x11);
}

void loop() {

    /* Begin Controlling Relay */
    DEBUG_PRINT.println("Channel 1 on");
    relay.turn_on_channel(1);
    delay(250);
    DEBUG_PRINT.println("Channel 2 on");
    relay.turn_off_channel(1);
    relay.turn_on_channel(2);
    delay(250);
    DEBUG_PRINT.println("Channel 3 on");
    relay.turn_off_channel(2);
    relay.turn_on_channel(3);
    delay(250);
    DEBUG_PRINT.println("Channel 4 on");
    relay.turn_off_channel(3);
    relay.turn_on_channel(4);
    delay(250);
    relay.turn_off_channel(4);

    relay.channelCtrl(CHANNLE1_BIT |
                      CHANNLE2_BIT |
                      CHANNLE3_BIT |
                      CHANNLE4_BIT);
    DEBUG_PRINT.print("Turn all channels on, State: ");
    DEBUG_PRINT.println(relay.getChannelState(), BIN);

    delay(250);

    relay.channelCtrl(CHANNLE1_BIT |
                      CHANNLE3_BIT);
    DEBUG_PRINT.print("Turn 1 3 channels on, State: ");
    DEBUG_PRINT.println(relay.getChannelState(), BIN);

    delay(250);

    relay.channelCtrl(CHANNLE2_BIT |
                      CHANNLE4_BIT);
    DEBUG_PRINT.print("Turn 2 4 channels on, State: ");
    DEBUG_PRINT.println(relay.getChannelState(), BIN);

    delay(250);


    relay.channelCtrl(0);
    DEBUG_PRINT.print("Turn off all channels, State: ");
    DEBUG_PRINT.println(relay.getChannelState(), BIN);

    delay(250);

}

Ok, so I just tried adding all of the #includes you had to my code, no luck.
Now I’m wondering about pullup resistors, but if that were the case then why would my esp8266 work just fine with it? Unless it defaults somewhere to turn on pullup or has it built in?

Also, the Stemma QT is only 3.3 volts, the relay is 5 volts.
I am using an external power supply until I get it working, then Ill see about using the onboard 5 volt pin to feed it. I hope we didn’t ruin our QT PY esp32’s hooking it up direct like that…
Trying this now:How and why to use I2C pullups? - #3 by Koepel - Hardware - Arduino Forum

Edit: I think we need one of these… DOH… I feel dumb rn.