
In the IDE, click on Sketch -> Import Library and verify that “I2C” appears at the bottom of the list.With the Wire Library, our entire scope of setup and configuration involved the command With the I2C Library we have a significantly larger configuration capability. begin, in that it performs the first sets of initializations. This is a required function and should be placed in the Setup area of your code. This ends all I2C functionality, returning the A4 and A5 pins to functioning as standard Arduino Analog pins. Look at that! No need to hunt around inside the guts of the library to change from 100kHz to 400kHz I2C! You can do it right away by specifying it with setSpeed. Speed is either 0 or 1 with 0 = 100kHz and 1 = 400kHz. Note though, that just because you can run at 400kHz, doesn’t mean that your components support it. This allows you to enable or disable the internal pullup resistors of your Arduino’s I2C pins. With the standard Wire library, the pullups are enabled by default and you have to modify the library code to change it.

In this case, 0 = Pullups OFF and 1 = Pullups ON. It allows you to specify how long the library will wait for it’s various conditions to become valid before releasing the SDA and SCL lines to high impedance states, basically resetting the whole thing and allow you to break free and continue processing. The allowed values are 0 = Disable Timeout and 1-65535 milliseconds. The author of the library has this note regarding the timeOut usage…

On a side note, be careful with setting too low a value because some devices support clock stretching which can increase the time before an acknowledgement is sent which could be misconstrued as a lockup.īy enabling timeOut, you will be able to receive error results from your send and receive functions as specified below. Searches the bus for I2C devices by essentially issuing every possible 7-bit address and seeing if an ACK is transmitted.

Results are output to the Serial monitor window.Īll of the I2c.write functions return values that can be used for error checking and troubleshooting.
