I2C, or Inter-Integrated Circuit, is a widely used synchronous serial communication protocol enabling communication among multiple integrated circuits (ICs) using just two wires. It is particularly popular in the Arduino community due to its simplicity, utilizing only two pins to connect multiple sensors and devices to the bus, each identified by a unique I2C address.
The I2C address serves as a crucial identifier for individual devices, allowing the master device to selectively communicate with a specific slave device on the bus. These addresses are typically 7 or 10 bits long, with the 7-bit scheme being more common, offering up to 128 unique addresses, generally sufficient for many applications.
In I2C communication, the master device initiates communication by sending the start condition, followed by the address of the slave it wishes to communicate with and the read/write bit, indicating the direction of the communication. The master dynamically generates the slave address during each transaction, and it does not possess a fixed I2C address. Each slave device on the bus, on the other hand, has its own fixed or configurable I2C address.
It's important to note that there is only one master device on the I2C bus, such as an Arduino UNO R3. Some I2C devices have fixed addresses, while others allow for address configuration through shorting pads on the module's PCB board.
Before using any I2C device, it's crucial to know its specific I2C address. Ensuring that the library's source code uses the correct I2C address is essential for proper communication. The following source code can be used to display the correct I2C addresses on the bus.