- The 2.8" Capacitive Touch Screen (product ID 2090) using the library for the touch screen "adafruit_focaltouch". The device has an I2C address of 0x38
- The DF Robot Oxygen Sensor, with it's own library. The device has an I2C address of 0x73 (selectable from 0x70 to 0x73)
Fast forward - if I have the Oxygen Sensor (0x73 or *any* of it's three other alternate addresses) plugged into the I2C chain, it makes 0x38 disappear. Just poof. I watched it as the scanner ran.
It gets weirder. If I have fewer devices on the chain and the Oxygen Sensor is the only one on WITH 0x38, they are both there. If I add in my RTC, all still there. Add in my BME680, all still there. But if there are more than 5 devices on the I2C chain, and 0x73 is one of them, 0x38 goes away.
I tried using a handful of other I2C devices I have and plugged them in to see if somehow one of my active devices was mediating some sort of conflict condition, but it didn't matter what other devices were on the chain. I tried them in different orders, I tried a parallel run - all with the same results.
I can have more than 6 devices (I had seven at one point) and they all report on the I2C scanner just fine, but as soon as one of them is 0x73, then 0x38 disappears.
Is this familiar to anyone? Why does it do it only on my GC, and not the IBM4E? The GC is running CircuitPython 8.0.5, and the IBM4E is running CP 7.something - would that have any effect?
I'm thinking of trying to use the secondary I2C bus on the GC for the O2 sensor tomorrow - am I likely to have success with that, or - if this is a known thing I'm running into - will that make any difference?
Thanks for any advice!