Skip to content

Commit 2f41bbf

Browse files
committed
Add optional parameter for using internal pull-up for int1
This is useful in cases where there is no support for internal pull-up resistor on the board (for example Binho Nova host adapter). On such devices, one have to use an external pull-up resistor.
1 parent 6791d3f commit 2f41bbf

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

adafruit_lis3dh.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,18 +93,23 @@
9393

9494

9595
class LIS3DH:
96-
"""Driver base for the LIS3DH accelerometer.
96+
"""Driver base for the LIS3DH accelerometer. Optional parameters:
9797
9898
:param digitalio.DigitalInOut int1: `digitalio.DigitalInOut` connected to
9999
the LIS3DH INT interrupt pin
100100
:param digitalio.DigitalInOut int2: `digitalio.DigitalInOut` connected to
101101
the LIS3DH I2 interrupt pin (only on STEMMA QT model)
102+
:param bool internal_pull_up_int1: use this to control if
103+
the internal pull-up of the board/MCU should be used or not for the LIS3DH
104+
INT interrupt pin (int1). Use external pull-up resistor if set to false.
105+
By default the internal pull-up resistor will be used.
102106
"""
103107

104108
def __init__(
105109
self,
106110
int1: Optional[digitalio.DigitalInOut] = None,
107111
int2: Optional[digitalio.DigitalInOut] = None,
112+
internal_pull_up_int1: bool = True,
108113
) -> None:
109114
# Check device ID.
110115
device_id = self._read_register_byte(_REG_WHOAMI)
@@ -129,7 +134,8 @@ def __init__(
129134
self._int2 = int2
130135
if self._int1:
131136
self._int1.direction = digitalio.Direction.INPUT
132-
self._int1.pull = digitalio.Pull.UP
137+
if internal_pull_up_int1:
138+
self._int1.pull = digitalio.Pull.UP
133139

134140
@property
135141
def data_rate(
@@ -310,7 +316,7 @@ def set_tap(
310316
time_limit: int = 10,
311317
time_latency: int = 20,
312318
time_window: int = 255,
313-
click_cfg: Optional[int] = None
319+
click_cfg: Optional[int] = None,
314320
) -> None:
315321
"""
316322
The tap detection parameters.
@@ -413,15 +419,18 @@ def __init__(
413419
*,
414420
address: int = 0x18,
415421
int1: Optional[digitalio.DigitalInOut] = None,
416-
int2: Optional[digitalio.DigitalInOut] = None
422+
int2: Optional[digitalio.DigitalInOut] = None,
423+
internal_pull_up_int1: bool = True,
417424
) -> None:
418425
from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
419426
i2c_device,
420427
)
421428

422429
self._i2c = i2c_device.I2CDevice(i2c, address)
423430
self._buffer = bytearray(6)
424-
super().__init__(int1=int1, int2=int2)
431+
super().__init__(
432+
int1=int1, int2=int2, internal_pull_up_int1=internal_pull_up_int1
433+
)
425434

426435
def _read_register(self, register: int, length: int) -> bytearray:
427436
self._buffer[0] = register & 0xFF
@@ -476,7 +485,7 @@ def __init__(
476485
*,
477486
baudrate: int = 100000,
478487
int1: Optional[digitalio.DigitalInOut] = None,
479-
int2: Optional[digitalio.DigitalInOut] = None
488+
int2: Optional[digitalio.DigitalInOut] = None,
480489
) -> None:
481490
from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
482491
spi_device,

0 commit comments

Comments
 (0)