#include #define I2C_SDA 6 // XIAO ESP32-C3 D4 #define I2C_SCL 7 // XIAO ESP32-C3 D5 const uint8_t TLE_ADDR = 0x35; // <-- change to 0x1F if that's your chip static inline bool read6(uint8_t *v) { Wire.beginTransmission(TLE_ADDR); Wire.write(0x00); if (Wire.endTransmission(true) != 0) return false; if (Wire.requestFrom((int)TLE_ADDR, 6, (int)true) != 6) return false; for (int i=0;i<6;i++) v[i] = Wire.read(); return true; } void setup() { Serial.begin(115200); while (!Serial) {} Wire.begin(I2C_SDA, I2C_SCL); Wire.setClock(100000); // same config that worked in Step 2 Wire.beginTransmission(TLE_ADDR); Wire.write(0x10); Wire.write(0x28); Wire.write(0x15); Wire.endTransmission(); delay(2); } void loop() { uint8_t v[6] = {0}; if (!read6(v)) { // ensure the stream still has frames even on a missed read // mark payload with a recognizable pattern v[0]=v[1]=v[2]=v[3]=v[4]=v[5]=0xEE; } // send header + payload (exactly 10 bytes per frame) Serial.write(1); Serial.write(2); Serial.write(3); Serial.write(4); Serial.write(v, 6); delay(50); // ~20 fps -> easier for the PC to keep up }