Skip to content

Commit 636dbf2

Browse files
authored
Merge pull request #30 from FoamyGuy/wait_longer_after_wakeup
Wait longer after wakeup
2 parents 7e9b7cf + b052c66 commit 636dbf2

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

adafruit_am2320.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,36 @@ def __init__(self, i2c_bus: I2C, address: int = AM2320_DEFAULT_ADDR):
110110

111111
def _read_register(self, register: int, length: int) -> bytearray:
112112
with self._i2c as i2c:
113+
write_success = False
113114
# wake up sensor
114-
try:
115-
i2c.write(bytes([0x00]))
116-
except OSError:
117-
pass
115+
for _ in range(3):
116+
try:
117+
i2c.write(bytes([0x00]))
118+
write_success = True
119+
time.sleep(0.1) # wait 100ms
120+
break
121+
except OSError:
122+
pass
123+
if not write_success:
124+
raise RuntimeError("Failed to wakeup I2C device")
125+
118126
time.sleep(0.01) # wait 10 ms
119127

120128
# Send command to read register
121129
cmd = [AM2320_CMD_READREG, register & 0xFF, length]
122130
# print("cmd: %s" % [hex(i) for i in cmd])
123-
i2c.write(bytes(cmd))
131+
write_success = False
132+
for _ in range(3):
133+
try:
134+
i2c.write(bytes(cmd))
135+
write_success = True
136+
time.sleep(0.005)
137+
break
138+
except OSError:
139+
pass
140+
if not write_success:
141+
raise RuntimeError("Failed to read from I2C device")
142+
124143
time.sleep(0.002) # wait 2 ms for reply
125144
result = bytearray(length + 4) # 2 bytes pre, 2 bytes crc
126145
i2c.readinto(result)

0 commit comments

Comments
 (0)