У меня есть Lolin D1 mini ESP8266 и 0.66 "oled экран припаянный сверху. У меня есть несколько запущенных микро python (1.12) примеров, использующих экран, чтобы показать некоторые текст, но я бы также хотел использовать кнопки I2 C на экране.
В соответствии с документацией на экране по умолчанию i2 c адрес 0x3 C (60), а кнопки 0x31 (49). Если я подключаюсь к REPL и запускаю это:
from machine import Pin, I2C
i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000)
i2c.scan()
, я получаю [49, 60]
, как и ожидалось.
Теперь я хотел бы прочитать состояние кнопок, поэтому, имея посмотрите на Wemos 'i2 c -button-library , похоже, что мне нужно действовать следующим образом:
- Отправить i2 c команду GET_KEY_VALUE (0x04) (1 байт) и получите 1 ACK
- Прочитать ответ i2 c (значение от 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
. Этот ответ не меняется, когда я держу кнопки.
Что я делаю неправильно?