I²c хаб (troyka-модуль)

Тема в разделе "Проводная и беспроводная связь", создана пользователем lostmind, 28 июн 2021.

  1. lostmind

    lostmind Нуб

    Добрый день, не подскажете как заставить работать данный модуль с micropython на esp32?
    почему то переключает только первые два канала остальные нет, ко всем подключены дисплеи 1602.

    from machine import I2C, Pin

    i2c = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)

    enable_bit = 0x08

    for i in range(8):
    i2c.writeto(112, hex(enable_bit | i))
    print(i2c.scan())

    output:
    [39,112]
    [39,112]
    [112]
    [112]
    [112]
    [112]
    [112]
    [112]
     
  2. Unixon

    Unixon Оракул Модератор

    hex() для чего?
     
  3. lostmind

    lostmind Нуб

    Операция с буфером памяти только в таком формате принимает или через байт b'8' первый канал b'9' второй и т.д.
     
  4. Unixon

    Unixon Оракул Модератор

    А если так
    Код (Python):
    i2c.writeto(112, enable_bit | i)
    или так написать?
    Код (Python):
    i2c.writeto(112, enable_bit + i)
     
  5. lostmind

    lostmind Нуб

    в обоих случаях ошибка:

    TypeError: object with buffer protocol required
     
  6. Unixon

    Unixon Оракул Модератор

    А, он массив хочет, тогда
    Код (Python):
    i2c.writeto(112, [enable_bit | i])
     
  7. lostmind

    lostmind Нуб

    Так тоже ошибку выдает, но Вы правы он хотел массив
    Код (Python):

    from machine import I2C, Pin
    i2c = I2C(1, sda=Pin(21), scl=Pin(22))

    enable_bit = 8

    for i in range(8):
        i2c.writeto(112, bytearray([enable_bit | i]))
        print(i2c.scan())
    так все работает. Спасибо огромное.
     
  8. lostmind

    lostmind Нуб

    Добрый день, честно говоря не сталкивался с такой ошибкой, пока ковырялся с проектом все было нормально. Но если есть интерес могу попробовать запустить на тест на сутки ради научного интереса?