Here's the same thing for CircuitPython:
# SPDX-FileCopyrightText: 2022 Carter Nelson for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import time
import board
import adafruit_tca9548a
from adafruit_bme280 import basic as adafruit_bme280
# Create I2C bus as normal
i2c = board.I2C() # uses board.SCL and board.SDA
# i2c = board.STEMMA_I2C() # For using the built-in STEMMA QT connector on a microcontroller
# Create the TCA9548A object and give it the I2C bus
tca = adafruit_tca9548a.TCA9548A(i2c)
#--------------------------------------------------------------------
# NOTE!!! This is the "special" part of the code
#
# Create each BME280 using the TCA9548A channel instead of the I2C object
bme1 = adafruit_bme280.Adafruit_BME280_I2C(tca[0]) # TCA Channel 0
bme2 = adafruit_bme280.Adafruit_BME280_I2C(tca[1]) # TCA Channel 1
bme3 = adafruit_bme280.Adafruit_BME280_I2C(tca[2]) # TCA Channel 2
bme4 = adafruit_bme280.Adafruit_BME280_I2C(tca[3]) # TCA Channel 3
#--------------------------------------------------------------------
print("Four BME280 Example")
while True:
# Access each sensor via its instance
pressure1 = bme1.pressure
pressure2 = bme2.pressure
pressure3 = bme3.pressure
pressure4 = bme4.pressure
print("-"*20)
print("BME280 #1 Pressure =", pressure1)
print("BME280 #2 Pressure =", pressure2)
print("BME280 #3 Pressure =", pressure3)
print("BME280 #4 Pressure =", pressure4)
time.sleep(1)
With that code running on the CircuitPython board, the output will look like this:
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable. code.py output: Four BME280 Example -------------------- BME280 #1 Pressure = 1014.0 BME280 #2 Pressure = 1013.72 BME280 #3 Pressure = 1013.73 BME280 #4 Pressure = 1013.75 -------------------- BME280 #1 Pressure = 1013.99 BME280 #2 Pressure = 1013.72 BME280 #3 Pressure = 1013.76 BME280 #4 Pressure = 1013.73 -------------------- BME280 #1 Pressure = 1013.98 BME280 #2 Pressure = 1013.71 BME280 #3 Pressure = 1013.74 BME280 #4 Pressure = 1013.75
Again, there is little more done compared to the 3xBME280s example other than adding a new instance for the 4th sensor, specifying the TCA9548A channel:
bme4 = adafruit_bme280.Adafruit_BME280_I2C(tca[3]) # TCA Channel 3
And then using it like the others:
pressure4 = bme4.pressure
Page last edited January 22, 2025
Text editor powered by tinymce.