Typically, there is a device that acts as a controller and sends requests to the target
devices on each bus. In this case, your microcontroller board acts as the controller,
and the sensor breakout acts as the target. Historically, the controller is referred to as
the master, and the target is referred to as the slave, so you may run into that
terminology elsewhere. The official terminology is controller and target().
Multiple I2C devices can be connected to the same clock and data lines. Each I2C
device has an address, and as long as the addresses are different, you can connect
them at the same time. This means you can have many different sensors and devices
all connected to the same two pins.
Both I2C connections require pull-up resistors, and most Adafruit I2C sensors and
breakouts have pull-up resistors built in. If you're using one that does not, you'll need
to add your own 2.2-10kΩ pull-up resistors from SCL and SDA to 3.3V.
I2C and CircuitPython
CircuitPython supports many I2C devices, and makes it super simple to interact with
them. There are libraries available for many I2C devices in the CircuitPython Library
Bundle(). (If you don't see the sensor you're looking for, keep checking back, more
are being written all the time!)
In this section, you'll learn how to scan the I2C bus for all connected devices. Then
you'll learn how to interact with an I2C device.
Necessary Hardware
You'll need the following additional hardware to complete the examples on this page.
Adafruit MCP9808 High Accuracy I2C
Temperature Sensor Breakout
The MCP9808 digital temperature sensor
is one of the more accurate/precise we've
ever seen, with a typical accuracy of
±0.25°C over the sensor's -40°C to...
https://www.adafruit.com/product/5027
©Adafruit Industries Page 158 of 263