adコンバータのads1115をi2c通信を使ってデータのやり取りを行おうと思っているのですが複数のadsとやり取りをするときにスレーブアドレスが重複してしまい苦戦しております。
初歩的なことで申し訳ないのですがどなたか解決方法を教えていただけないでしょうか。
質問の意図がつかみづらいのですが... 以下がイメージしていたコードの骨子です。このままではコンパイルは通りません。適宜補ってください。 (C99スタイルで書いています)
---
// 物理アドレス (ch番号, I2Cアドレス)
typedef struct { uint8_t ch; uint8_t i2c_addr; // 7-bit} PhysicalAddr_t;
const PhysicalAddr_t phy_addrs[] = {{0, 0x48}, {0, 0x49}, {0, 0x4A}, {0, 0x4B}, {1, 0x48}}; main() { // 5台分のAD値を順次取得 (論理アドレス 0~4) for (uint32_t log_addr = 0; log_addr < 5; log_addr++) { uint16_t value = GetAdc(log_addr); } } uint16_t GetAdc(uint32_t log_addr) { // 論理アドレスを物理アドレスに変換 PhysicalAddr_t pa = phy_addrs[log_addr]; // pa.ch番号に応じたI2C APIを使用する。 // I2C APIにpa.i2c_addrを指定する。 }