Skip to content

Commit 3d90092

Browse files
committed
allow I2C bus arg with default address. Configure SPIDevice internally.
1 parent 64692dc commit 3d90092

File tree

2 files changed

+28
-10
lines changed

2 files changed

+28
-10
lines changed

adafruit_spa06_003.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@
3434
from adafruit_register.register_accessor import I2CRegisterAccessor, SPIRegisterAccessor
3535
from adafruit_register.register_bit import ROBit, RWBit
3636
from adafruit_register.register_bits import ROBits, RWBits
37+
from busio import I2C
3738
from micropython import const
3839

3940
try:
4041
from typing import Union
4142

42-
from busio import I2C, SPI
4343
from digitalio import DigitalInOut
4444
except ImportError:
4545
pass
@@ -387,18 +387,26 @@ class SPA06_003:
387387
24, SPA06_003_REG_PSR_B2, 0, register_width=3, lsb_first=False, signed=True
388388
)
389389

390-
def __init__(self, bus_device: Union[I2CDevice, SPIDevice]):
391-
if isinstance(bus_device, SPIDevice):
390+
def __init__(self, bus_or_device: Union[I2C, I2CDevice, SPIDevice]):
391+
if isinstance(bus_or_device, SPIDevice):
392392
try:
393-
self.register_accessor = SPIRegisterAccessor(bus_device)
393+
self._configure_spi_device(bus_or_device)
394+
self.register_accessor = SPIRegisterAccessor(bus_or_device)
394395
except ValueError:
395396
raise ValueError(f"No SPI device found.")
396397

397-
elif isinstance(bus_device, I2CDevice):
398+
elif isinstance(bus_or_device, I2CDevice):
398399
try:
399-
self.register_accessor = I2CRegisterAccessor(bus_device)
400+
self.register_accessor = I2CRegisterAccessor(bus_or_device)
400401
except ValueError:
401402
raise ValueError(f"No I2C device found.")
403+
elif isinstance(bus_or_device, I2C):
404+
try:
405+
i2c_device = I2CDevice(bus_or_device, SPA06_003_DEFAULT_ADDR)
406+
self.register_accessor = I2CRegisterAccessor(i2c_device)
407+
except ValueError:
408+
raise ValueError(f"No I2C device found.")
409+
402410
else:
403411
raise ValueError("bus_device must be an instance of I2CDevice or SPIDevice.")
404412

@@ -440,6 +448,11 @@ def __init__(self, bus_device: Union[I2CDevice, SPIDevice]):
440448
# Set measurement mode to continuous both
441449
self.measurement_mode = SPA06_003_MEAS_MODE_CONTINUOUS_BOTH
442450

451+
@staticmethod
452+
def _configure_spi_device(spi_device: SPIDevice):
453+
spi_device.polarity = 1
454+
spi_device.phase = 1
455+
443456
@property
444457
def temperature(self):
445458
"""Temperature in Celsius"""

examples/spa06_003_simpletest.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@
55
import time
66

77
import board
8-
from adafruit_bus_device.i2c_device import I2CDevice
98

10-
from adafruit_spa06_003 import SPA06_003, SPA06_003_DEFAULT_ADDR
9+
from adafruit_spa06_003 import SPA06_003
1110

1211
i2c = board.I2C()
13-
i2c_device = I2CDevice(i2c, SPA06_003_DEFAULT_ADDR)
14-
spa = SPA06_003(i2c_device)
1512

13+
# Initialize with default I2C Address
14+
spa = SPA06_003(i2c)
15+
16+
# Initialize with alternate I2C Address
17+
# from adafruit_bus_device.i2c_device import I2CDevice
18+
# from adafruit_spa06_003 import SPA06_003_ALTERNATE_ADDR
19+
# i2c_device = I2CDevice(i2c, SPA06_003_ALTERNATE_ADDR)
20+
# spa = SPA06_003(i2c_device)
1621

1722
while True:
1823
if spa.temperature_data_ready and spa.pressure_data_ready:

0 commit comments

Comments
 (0)