Connecting devices over GPIO has one downside. A processor has a limited and relatively small number of pins available for GPIO. When you need to work with numerous devices or devices that provide complex functionality, you can run out of pins easily.
A solution is using one of the standard serial buses to connect peripheral devices. One of them is Inter-Integrated Circuit (I2C). This is widely used to connect various low-speed devices because of its simplicity and because a device can be connected with only two wires on the host controller.
The bus is well supported both on hardware and software levels. By using I2C peripherals, developers can control them from user-space applications without writing complex device drivers.
In this recipe, we will learn how to work with an I2C device on a Raspberry Pi board. We will use a popular and inexpensive...