我有一个Lolin D1 mini ESP8266和一个0.66" oled screen焊接在顶部。我有一些正在运行的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’
。