Skip to content

Commit b4350b6

Browse files
committed
Try 2nd I2C addres if first reset fails
1 parent eb476d0 commit b4350b6

1 file changed

Lines changed: 21 additions & 4 deletions

File tree

lib/gt911_touch.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545

4646

4747
_GT_DEFAULT_I2C_ADDR = 0x5D
48+
_GT_SECONDARY_I2C_ADDR = 0x14
4849

4950
_GT_COMMAND = const(0x8040)
5051

@@ -73,23 +74,39 @@ class GT911_Touch:
7374
A driver for the GT911 capacitive touch sensor.
7475
"""
7576

76-
def __init__(self, i2c, res_pin, address=_GT_DEFAULT_I2C_ADDR, debug=False, irq_pin=None):
77+
def __init__(self, i2c, res_pin, i2c_address=None, debug=False, irq_pin=None):
7778

7879
self._debug = debug
7980
self._irq_pin = irq_pin
8081

8182
if type(res_pin) != digitalio.DigitalInOut:
8283
raise RuntimeError("res_pin must be of type digitalio.DigitalInOut")
8384

85+
if i2c_address is not None:
86+
address = i2c_address
87+
else:
88+
address = _GT_DEFAULT_I2C_ADDR
89+
8490
self._reset(address,res_pin,irq_pin)
8591
try:
8692
self._i2c = I2CDevice(i2c, address)
8793
except:
8894
if debug:
8995
print("Second reset attempt")
90-
self._reset(address,res_pin,irq_pin)
91-
self._i2c = I2CDevice(i2c, address)
96+
if i2c_address is None:
97+
address = _GT_SECONDARY_I2C_ADDR
98+
try:
99+
self._i2c = I2CDevice(i2c,address)
100+
except:
101+
self._reset(address,res_pin,irq_pin)
102+
self._i2c = I2CDevice(i2c, address)
103+
else:
104+
self._reset(address,res_pin,irq_pin)
105+
self._i2c = I2CDevice(i2c, address)
92106

107+
if debug:
108+
print("I2C Address:",address)
109+
93110
self._last_touch = self._read_last_touch()
94111

95112
chip_id = chr(self._read(_GT_REG_PRODID_1,1)[0])
@@ -169,7 +186,7 @@ def touches(self) -> List[dict]:
169186
return touchpoints
170187

171188
def _reset(self, address, res_pin, irq_pin=None) -> None:
172-
""" Initialize board """
189+
""" Initialize board - This sometimes fails, Ctrl-D reset to recover """
173190
time.sleep(.0001)
174191
res_pin.direction = digitalio.Direction.OUTPUT
175192
res_pin.value = True

0 commit comments

Comments
 (0)