Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Button Can';t使用MicroPython读取ESP8266中的I2C按钮_Button_Esp8266_I2c_Micropython - Fatal编程技术网

Button Can';t使用MicroPython读取ESP8266中的I2C按钮

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] 现在我想读一下按钮状态,看一下,似乎我

我有一个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]

现在我想读一下按钮状态,看一下,似乎我必须按照以下方式进行:

  • 发送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'。感谢您回来并发布答案!