We’re trying to use a REV Robotics V3 Color/Proximity Sensor to sense the color wheel, but we want to use two in order to be more accurate. However, they have a set I2C bus address and there’s only one I2C port on the RoboRio. How can we use multiple sensors?
We had pretty much the same question and received the following response from REV. Sounds like the max is two sensors and you need an MXP.
"There are two I2C ports on the roboRIO, one is dedicated and the other is on the MXP. You would need a break out board like the More Board (http://www.revrobotics.com/rev-11-1100/) to connect to the other I2C port on the MXP.
There is not a way to have the address change persist through a power cycle for the I2C sensors that REV has.
I2C multiplexers are usable to put more than one I2C device with the same address on a BUS, however these are not directly supported by REV."
I asked this a few other places. There are a few options.
1 (and maybe a simpler opption?) From chauser…
This I2C multiplexer: https://www.adafruit.com/product/2717 allows you to attach up to 8 I2C buses to a single bus. You can then put the devices with the same address on different output buses of the multiplexer. A single-byte write to the multiplexer’s I2C bus address controls which of the downstream buses are connected to the bus coming from the Rio at any given time. That is, you tell the multiplexer which downstream bus you want to be connected then you can talk to devices on that bus for awhile, then you tell it a different downstream bus. It’s a lot simpler than trying to do it with a coprocessor.
- You can use a coprocessor. My thought was to set up a coprocessor and use gpio to directly connect to the rio through DIO.
I am not sure if the color sensor has Arduino libraries, but it is possible.