Как передать адреса I2C в код Adafruit CircuitPython? (Запуск ADS1115)
Я пытаюсь запустить два Adafruit ADS1115 на одном Raspberry Pi, используя два адреса I2C (0x48, 0x49). Адрес для каждого устройства можно установить, связав контакт ADDR с высоким уровнем (0x49) или оставив его плавающим (по умолчанию, 0x48). Я подтвердил, что каждая плата работает, когда адрес установлен на 0x48, и запуск "i2cdetect 1" подтверждает, что обе платы подключены по правильным адресам.
Я могу успешно запустить этот образец кода
У меня такой вопрос: как заставить код читать с адреса I2C 0x49 вместо 0x48? Нигде не могу найти документацию. Пожалуйста, порекомендуйте.
2 ответа
Поскольку существует библиотека Python, применяются правила языка Python, в частности ООП с наследованием классов. При этом класс ADS1115 наследуется от ADS1x15, который, в свою очередь, имеет__init__()
метод (в конструкторе ООП), определенный следующим образом:
def __init__(self, address=ADS1x15_DEFAULT_ADDRESS, i2c=None, **kwargs):
что означает, что он знает как минимум два позиционных аргумента с именами address
а также i2c
со значениями по умолчанию ADS1x15_DEFAULT_ADDRESS
а также None
соответственно. Итак, вам нужно в вашем коде переопределить их, т.е. вместоads = ADS.ADS1115(i2c)
использовать
ads = ADS.ADS1115(address=0x48, i2c=i2c)
Для второго положил туда 0x49
.
Ага!ads1 = ADS.ADS1115(i2c, address=0x49)
Источник: https://github.com/adafruit/Adafruit_CircuitPython_ADS1x15/issues/20