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

问题描述 投票:1回答:1

我有一个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命令GET_KEY_VALUE(0x04)(1个字节)并获得1个ACK
  • 读取i2c响应(值从0x00到0x04)(1字节)

我照做:

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。按住按钮时此响应不会改变。

我在做什么错?

button esp8266 i2c micropython
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.