Setting the address of the I2C motor driver requires changes in both hardware and software. I don’t have a board here to act as a reference, but from reading the specs and wiki pages for the board, it looks like there is a small DIP switch on theboard that is used to set the lower for bits of the board’s address on the I2C Bus. The design forces the upper for bits to be all zeroes. Each board on the same I2C bus needs a unique address, so you must choose a different switch setting on each of the boards you use for your project. The range of the addresses would be from 0x00 through 0x0f. Setting a switch position to ON sets the equivalent address bit to 1. Setting a switch position to OFF sets the corresponding address bit to 0. For example, to set the board’s address to 0x09, set the switch positions to ON OFF OFF ON. Address 0x03 would be OFF OFF ON ON.
Once you’ve set unique addresses for each of the I2C motor drivers, you would use those addresses when using the motor driver library to set the speed and direction of the motors or servos.
It may be helpful to review the sample code and function definitions on this page: seeedstudio.com/wiki/Grove_- … river_V1.3
The I2C address in the sample is set in the definition of I2CMotorDriverAdd. In the sample code the I2C address is set to 0x0f. To make the sample code work with, the motor driver’s address would have to be set to all ON switches.
In order to extend the sample code and use multiple motor drivers in the same sketch, significant changes would have to be made to the sample code I reviewed from seeedstudio.com/wiki/images/ … odeV13.zip
The sample code there assumes a single motor driver. Everywhere there is a reference to the defined constant I2CMotorDriverAdd would have to be replaced with a variable, and probably every function would need a new parameter.
I don’t have any of these motor drivers to test this with, but I’m fairly certain based on my reasons of various resources. I hope this helps.