Using devices with the I2C bus
Raspberry Pi can support several higher-level protocols that a wide range of devices can easily be connected to. In this chapter, we shall focus on the most common bus, called I-squared-C (I2C). It provides a medium-speed bus for communicating with devices over two wires. In this section, we shall use I2C to interface with an 8-bit ADC. This device will measure an analog signal, convert it to a relative value between 0 and 255, and send the value as a digital signal (represented by 8-bits) over the I2C bus to the Raspberry Pi.
The advantages of I2C can be summarized as follows:
- Maintains a low pin/signal count, even with numerous devices on the bus
- Adapts to the needs of different slave devices
- Readily supports multiple masters
- Incorporates ACK/NACK functionality for improved error handling
Getting ready
The I2C bus is not enabled in all Raspberry Pi images; therefore, we need to enable the module and install some supporting tools. Newer versions of Raspbian use device...