I build a small robot with several devices on the I2C bus.
Everything worked fine until i added the life follower.
Info on the line follower is here:
I first suspected my code (and pull-ups) but it seems to be specific to the device:
I can make the line-follower work fine on its own, if there is nothing else on the i2c bus
So i tried the “standard” i2cscanner with 2 devices, it reports the addresses of both a few times but then it hangs
It works fine as long as the module is alone on the bus.
When I check the I2C signals i can see the SDA remains low after it hits the line follower ACK (see attached)
The line follower has build-on pull-ups of 1K (i measured it and seems right, 1k seems already low so i doubt it will get better by going even lower and the signals seem reasonably rectangular, usually an indication that pull-up is ok)
it works again once or twice when i hit the reset on the line follower. I can make it work by adding a watchdog that sends a reset to the module when the Arduino hangs, but it’s not an ideal solution.
I’ve build quite a few Arduino projects with i2c displays and other sensors without problems, this one stumps me and it’s interesting that it does work on its own.