Как передать адреса 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

Другие вопросы по тегам