无法使用 MicroPython 读取 ESP8266 中的 I2C 按钮

Can't read I2C buttons in ESP8266 with MicroPython

我有一个 Lolin D1 mini ESP8266 and a 0.66" oled screen 焊接在上面。我有一些 运行ning micropython (1.12) 示例使用屏幕显示一些文本,但我也想使用屏幕的 I2C 按钮。

根据文档,屏幕的默认 i2c 地址为 0x3C (60),按钮为 0x31 (49)。如果我连接到 REPL 并且 运行 这个:

from machine import Pin, I2C
i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000)
i2c.scan()

我按预期得到了 [49, 60]

现在我想读取按钮状态,所以看看Wemos' i2c-button-library,看来我必须按以下方式进行:

我也是:

i2c.writeto(49, b'4')  # returns 1, so I get 1 ACK, correct.
i2c.readfrom(49, 1)    # returns \x02

但我得到的只是\x02。即使我读取更多字节,我也会得到 \x02\xff\xff\xff\xff\xff\xff\xff\xff\xff。当我按住按钮时,此响应不会改变。

我做错了什么?

问题已解决。我应该发送 b’\x04’ 而不是 b’4’