First of all I would like to apologize if my question seems stupid. I am new in the coding world.
I have looked and looked and looked, and I haven't found a way to change the address of a BNO055 after it has been initialised, without reinitializing the whole thing.
My setup:
Four BNO055 connected on the I2C bus of a Feather 32u4.
Each ADR pin of the BNO055 are connected to a IO pin.
My algorithm:
To address each BNO055 one after the other, I set all four IO pins to 0 apart from 1.
I have come to understand, that to be able to switch the address of the BNO055, you need to reinitialise it. It is not enough to just set the ADR pin to a different value.
This implies that in my loop, I need to reinitialise the BNO055 each time.
Two downfalls:
Time consuming,
Loss of calibration data each time.
Do you have an idea on how to be able to reinitialise only the address of all BNO055 without reinitializing the whole thing, at each iteration of the loop?
Again I am just a beginner. Sorry if the question is stupid.
Thank you for your answer Jremington (I have seen your name in a few threads ).
I actually didn't find any other threads with exactly this. Usually what I saw is people trying to put two in a row.
Are you convinced it's not possible to reset just the address? I was trying to find the begin() code, but i don't know much about all this. Is the routine to switch on the BNO055 a routine that we don't have access to?
Are you convinced it's not possible to reset just the address?
No, which is why I used the words "may not".
However, it seems very likely to me that the CPU in the BNO055 does NOT read the address pin except upon reset, as doing otherwise could conceivably require internal storage for two completely independent implementations of the addressable sensors and intermediate values for the fusion algorithm.
What you want is a "bus enable" input. Ask the Bosch engineers for a definitive answer.