Не могу прочитать кнопки I2 C в ESP8266 с MicroPython - PullRequest
1 голос
/ 09 апреля 2020

У меня есть 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. Этот ответ не меняется, когда я держу кнопки.

Что я делаю неправильно?

1 Ответ

1 голос
/ 18 апреля 2020

Проблема была решена. Я должен был отправить b’\x04’ вместо b’4’.

...