From 8f5fa0860d0ef02e16cf1ecc9cbb5d945ea5ace5 Mon Sep 17 00:00:00 2001 From: foamyguy Date: Sun, 5 Dec 2021 10:24:49 -0600 Subject: [PATCH 1/4] check for accelerometer before initialising --- adafruit_pybadger/pybadge.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/adafruit_pybadger/pybadge.py b/adafruit_pybadger/pybadge.py index e873809..d344b56 100644 --- a/adafruit_pybadger/pybadge.py +++ b/adafruit_pybadger/pybadge.py @@ -64,13 +64,18 @@ def __init__(self): self._accelerometer = None if i2c is not None: - int1 = digitalio.DigitalInOut(board.ACCELEROMETER_INTERRUPT) - try: - self._accelerometer = adafruit_lis3dh.LIS3DH_I2C( - i2c, address=0x19, int1=int1 - ) - except ValueError: - self._accelerometer = adafruit_lis3dh.LIS3DH_I2C(i2c, int1=int1) + while not i2c.try_lock(): + pass + _i2c_devices = i2c.scan() + i2c.unlock() + if (int(0x18) in _i2c_devices): # PyBadge LC doesn't have accelerometer + int1 = digitalio.DigitalInOut(board.ACCELEROMETER_INTERRUPT) + try: + self._accelerometer = adafruit_lis3dh.LIS3DH_I2C( + i2c, address=0x19, int1=int1 + ) + except ValueError: + self._accelerometer = adafruit_lis3dh.LIS3DH_I2C(i2c, int1=int1) # NeoPixels self._neopixels = neopixel.NeoPixel( From 346e8d35428cdbb07cc314c118cb622ffcf0410d Mon Sep 17 00:00:00 2001 From: foamyguy Date: Sun, 5 Dec 2021 10:34:50 -0600 Subject: [PATCH 2/4] check alternate address. code format --- adafruit_pybadger/pybadge.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/adafruit_pybadger/pybadge.py b/adafruit_pybadger/pybadge.py index d344b56..bccff32 100644 --- a/adafruit_pybadger/pybadge.py +++ b/adafruit_pybadger/pybadge.py @@ -68,7 +68,9 @@ def __init__(self): pass _i2c_devices = i2c.scan() i2c.unlock() - if (int(0x18) in _i2c_devices): # PyBadge LC doesn't have accelerometer + + # PyBadge LC doesn't have accelerometer + if int(0x18) in _i2c_devices or int(0x19) in _i2c_devices: int1 = digitalio.DigitalInOut(board.ACCELEROMETER_INTERRUPT) try: self._accelerometer = adafruit_lis3dh.LIS3DH_I2C( From c0abb195bfe27e0b418dd6a00baa8221a41f9c20 Mon Sep 17 00:00:00 2001 From: foamyguy Date: Sun, 5 Dec 2021 12:44:00 -0600 Subject: [PATCH 3/4] attempt i2c lock 10 times at most --- adafruit_pybadger/pybadge.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/adafruit_pybadger/pybadge.py b/adafruit_pybadger/pybadge.py index bccff32..faadda5 100644 --- a/adafruit_pybadger/pybadge.py +++ b/adafruit_pybadger/pybadge.py @@ -64,10 +64,14 @@ def __init__(self): self._accelerometer = None if i2c is not None: - while not i2c.try_lock(): - pass - _i2c_devices = i2c.scan() - i2c.unlock() + _i2c_devices = [] + + for i in range(10): + # try lock 10 times to avoid infinite loop in sphinx build + if i2c.try_lock(): + _i2c_devices = i2c.scan() + i2c.unlock() + break # PyBadge LC doesn't have accelerometer if int(0x18) in _i2c_devices or int(0x19) in _i2c_devices: From 2e6781ee7373fb41151ed9cbffa055f01dc678fd Mon Sep 17 00:00:00 2001 From: foamyguy Date: Sun, 5 Dec 2021 13:15:53 -0600 Subject: [PATCH 4/4] remove unused variable i and use _ instead --- adafruit_pybadger/pybadge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_pybadger/pybadge.py b/adafruit_pybadger/pybadge.py index faadda5..38f1645 100644 --- a/adafruit_pybadger/pybadge.py +++ b/adafruit_pybadger/pybadge.py @@ -66,7 +66,7 @@ def __init__(self): if i2c is not None: _i2c_devices = [] - for i in range(10): + for _ in range(10): # try lock 10 times to avoid infinite loop in sphinx build if i2c.try_lock(): _i2c_devices = i2c.scan()