edit

Grove 8チャンネルI2Cマルチプレクサ/I2Cハブ(TCA9548A)

Grove - I2Cハブ(4ポート)Grove - I2Cハブ(6ポート)の最新バージョンです。

前のバージョンと比較して、Grove - 8チャンネルI2Cマルチプレクサ/I2Cハブ(TCA9548A)は単にポートの量が増えるだけではありません。ご存じのとおり、I2Cデバイスは同じバスシステム内で異なるアドレスを使用する必要があります。Grove I2Cハブ(4または6ポート)を使っても、このルールを守ります。ただし、TCA9548A I2Cマルチプレクサチップ搭載のGrove-8チャンネルI2Cハブを利用して、最大8つの同じアドレスI2Cデバイスを同じGrove I2Cシステムに接続できます。時分割多重化技術を採用して、同じコントローラーが同じアドレスを持つ8つのI2Cデバイスを制御できます。アドレスの衝突について心配する必要がなくなりました。

特徴

  • 8 Grove I2C ポート
  • 同じI2Cアドレスを持つ複数のデバイスをサポートする
  • 動作電圧:3.3V / 5V

サポートするプラットフォーム

Arduino Raspberry Pi BeagleBone Wio LinkIt ONE

入門

Grove - 8 チャンネルI2Cハブに接続しているデバイスのアドレスを読んでください。

必要な部品

Seeeduino XIAO Groveブレッドボード Grove - 8チャンネルI2C マルチプレクサ/I2Cハブ(TCA9548A)
購入 購入 購入

また、最大八つのI2Cデバイスが必要とします。 こちらをクリックして気に入るGrove I2Cデバイスを探してください。 これらの例で、3つのI 2 Cデバイスを使用します。

ハードウェアの接続

I2CハブをSeeeduino XIAOのI2Cインターフェースに接続して、各I2Cデバイスを各ハブに接続してください。

ソフトウェアコード

#include "TCA9548A.h"

// if you use the software I2C to drive, you can uncommnet the define SOFTWAREWIRE which in TCA9548A.h. 
#ifdef SOFTWAREWIRE
  #include <SoftwareWIRE.h>
  SoftwareWire myWIRE(3, 2);
  TCA9548A<SoftwareWire> TCA;
  #define WIRE myWIRE
#else   
  #include <Wire.h>
  TCA9548A<TwoWire> TCA;
  #define WIRE Wire
#endif

#define SERIAL Serial

void setup()
{
  SERIAL.begin(115200);
  while(!SERIAL){};

  //WIRE.begin();
  TCA.begin(WIRE);
  //defaut all channel was closed
  //TCA.openAll();
  //TCA.closeAll();

  // Select the channels you want to open. You can open as many channels as you want
  TCA.openChannel(TCA_CHANNEL_0);   //TCA.closeChannel(TCA_CHANNEL_0);
  TCA.openChannel(TCA_CHANNEL_1); //TCA.closeChannel(TCA_CHANNEL_1);
  TCA.openChannel(TCA_CHANNEL_2); //TCA.closeChannel(TCA_CHANNEL_2);
  TCA.openChannel(TCA_CHANNEL_3); //TCA.closeChannel(TCA_CHANNEL_3);
  TCA.openChannel(TCA_CHANNEL_4); //TCA.closeChannel(TCA_CHANNEL_4);
  TCA.openChannel(TCA_CHANNEL_5); //TCA.closeChannel(TCA_CHANNEL_5);
  TCA.openChannel(TCA_CHANNEL_6); //TCA.closeChannel(TCA_CHANNEL_6);
  TCA.openChannel(TCA_CHANNEL_7); //TCA.closeChannel(TCA_CHANNEL_7); 

}

void loop()
{

  uint8_t error, i2cAddress, devCount, unCount;

  SERIAL.println("Scanning...");

  devCount = 0;
  unCount = 0;
  for(i2cAddress = 1; i2cAddress < 127; i2cAddress++ )
  {
    WIRE.beginTransmission(i2cAddress);
    error = WIRE.endTransmission();

    if (error == 0)
    {
      SERIAL.print("I2C device found at 0x");
      if (i2cAddress<16) SERIAL.print("0");
      SERIAL.println(i2cAddress,HEX);
      devCount++;
    }
    else if (error==4)
    {
      SERIAL.print("Unknow error at 0x");
      if (i2cAddress<16) SERIAL.print("0");
      SERIAL.println(i2cAddress,HEX);
      unCount++;
    }    
  }

  if (devCount + unCount == 0)
    SERIAL.println("No I2C devices found\n");
  else {
    SERIAL.print(devCount);
    SERIAL.print(" device(s) found");
    if (unCount > 0) {
      SERIAL.print(", and unknown error in ");
      SERIAL.print(unCount);
      SERIAL.print(" address");
    }
    SERIAL.println();
  }
  SERIAL.println();
  delay(1000); 
}
  • Step 1 リソースからライブラリーをダウンロードして、Arduino IDEに「zip」ライブラリーを加えてください。Arduinoライブラリーをインストールする方法をご参照ください。

  • Step 2 例のコードを見つけて、それをボードにアップロードしてください。 コードをアップロードする方法をご参照ください。

  • Step 3 コードをアップロードした後、シリアルモニターから各デバイスのI2Cアドレスが見えます。アドレス0 x 70はI2CハブのI2Cアドレスです。

回路図

資料

技術サポート

技術的な問題はフォーラムにお問い合わせください。