Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 27 additions & 10 deletions adafruit_spa06_003.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,17 @@
import time

from adafruit_bus_device.i2c_device import I2CDevice
from adafruit_register.i2c_bit import ROBit, RWBit
from adafruit_register.i2c_bits import ROBits, RWBits
from adafruit_register.i2c_struct import ROUnaryStruct
from adafruit_bus_device.spi_device import SPIDevice
from adafruit_register.register_accessor import I2CRegisterAccessor, SPIRegisterAccessor
from adafruit_register.register_bit import ROBit, RWBit
from adafruit_register.register_bits import ROBits, RWBits
from micropython import const

try:
import typing

from busio import I2C
from busio import I2C, SPI
from digitalio import DigitalInOut
except ImportError:
pass

Expand Down Expand Up @@ -152,7 +154,7 @@
}


class SPA06_003_I2C:
class SPA06_003:
"""
SPA06-003 temperature and pressure sensor breakout CircuitPython driver.

Expand Down Expand Up @@ -386,11 +388,26 @@ class SPA06_003_I2C:
24, SPA06_003_REG_PSR_B2, 0, register_width=3, lsb_first=False, signed=True
)

def __init__(self, i2c_bus: I2C, address: int = SPA06_003_DEFAULT_ADDR):
try:
self.i2c_device = I2CDevice(i2c_bus, address)
except ValueError:
raise ValueError(f"No I2C device found at address 0x{address:02X}")
def __init__(
self,
i2c: I2C = None,
address: int = SPA06_003_DEFAULT_ADDR,
spi: SPI = None,
cs: DigitalInOut = None,
):
if spi is not None and cs is not None:
try:
self.spi_device = SPIDevice(spi, cs, baudrate=1000000, phase=1, polarity=1)
self.register_accessor = SPIRegisterAccessor(self.spi_device)
except ValueError:
raise ValueError(f"No SPI device found.")

elif i2c is not None:
try:
i2c_device = I2CDevice(i2c, address)
self.register_accessor = I2CRegisterAccessor(i2c_device)
except ValueError:
raise ValueError(f"No I2C device found.")

if self.chip_id != 0x11:
raise ValueError("SPA06_003_I2C device not found")
Expand Down
6 changes: 3 additions & 3 deletions examples/spa06_003_simpletest.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@

import board

from adafruit_spa06_003 import SPA06_003_I2C
from adafruit_spa06_003 import SPA06_003

i2c = board.I2C()
spa = SPA06_003_I2C(i2c)
spa = SPA06_003(i2c)


while True:
if spa.temperature_data_ready and spa.pressure_data_ready:
print(f"Temperature: {spa.temperature} °C", end=" ")
print(f"Pressure: {spa.pressure} hPa")

time.sleep(0.01)
time.sleep(1.0)
22 changes: 22 additions & 0 deletions examples/spa06_003_spi_simpletest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# SPDX-FileCopyrightText: Copyright (c) 2025 Tim Cocks for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import time

import board
from digitalio import DigitalInOut

from adafruit_spa06_003 import SPA06_003

spi = board.SPI()
cs = DigitalInOut(board.D10)

spa = SPA06_003(spi=spi, cs=cs)


while True:
if spa.temperature_data_ready and spa.pressure_data_ready:
print(f"Temperature: {spa.temperature} °C", end=" ")
print(f"Pressure: {spa.pressure} hPa")

time.sleep(1.0)