Button Can';t使用MicroPython读取ESP8266中的I2C按钮
我有一个ESP8266和一个焊接的顶部。我有一些运行的micropython(1.12)示例使用屏幕显示一些文本,但我也想使用屏幕的I2C按钮 根据文档,屏幕具有默认i2c地址0x3C(60),按钮为0x31(49)。如果我连接到REPL并运行以下操作:Button Can';t使用MicroPython读取ESP8266中的I2C按钮,button,esp8266,i2c,micropython,Button,Esp8266,I2c,Micropython,我有一个ESP8266和一个焊接的顶部。我有一些运行的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] 现在我想读一下按钮状态,看一下,似乎我
from machine import Pin, I2C
i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000)
i2c.scan()
我得到了预期的[49,60]
现在我想读一下按钮状态,看一下,似乎我必须按照以下方式进行:
- 发送i2c命令获取密钥值(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\xff\xff\xff
。当我按住按钮时,此响应不会改变
我做错了什么?问题已经解决了。我应该发送
b'\x04'
而不是b'4'
我做了一点搜索。。。看看这个。。。但不是100%确定这是否是你的问题。“起初我尝试过(但失败了!)使用I2C连接OLED模块。然后我注意到OLED模块背面有一些打印的指令。为了将其用作I2C模块,我必须通过焊接和拆焊背面的一些电阻器来重新布线。当时我决定使用默认配置:4线SPI来连接它。”我认为情况不一样。我不使用SPI(甚至不确定我的模块是否支持它,因为规范中没有说明),而是I2C,oled正在工作。我的问题在于I2C Buton。谢谢你的搜索。你有没有得到官方的OLED模块或克隆?有时克隆体并不完全相同。也许可以添加一张董事会的照片。原件。问题是我写的是b'4'而不是b'x\04'。感谢您回来并发布答案!