m5Atom MatrixでExt.IO2を使う

m5 Ext.IO2 IoTデバイス

m5Atom matrixでExt.IO2を使う情報があまりなかったので備忘録
M5_EXTIO2ライブラリに含まれる関数の一覧と説明(リファレンス作りました)

M5_EXTIO2

  1. begin(TwoWire wire, uint8_t sda, uint8_t scl, uint8_t addr)
    • 概要: I2C通信を初期化し、デバイスに接続を試みます。
    • 引数:
      • wire: 使用するI2Cインスタンス(デフォルトはWire)。
      • sda: SDAピン。
      • scl: SCLピン。
      • addr: デバイスアドレス(デフォルトは0x45)。
    • 戻り値: 初期化が成功した場合はtrue、失敗した場合はfalse
  2. setAllPinMode(extio_io_mode_t mode)
    • 概要: 全ピンのモードを設定します。
    • 引数:
      • mode: 設定するモード(例: DIGITAL_INPUT_MODE
        ・ DIGITAL_INPUT_MODE
        ・ DIGITAL_OUTPUT_MODE
        ・ ADC_INPUT_MODE
        ・ SERVO_CTL_MODE
        ・ RGB_LED_MODE
      • 戻り値: 設定が成功した場合はtrue、失敗した場合はfalse
  3. setPinMode(uint8_t pin, extio_io_mode_t mode)
    • 概要: 指定したピンのモードを設定します。
    • 引数:
      • pin: 設定するピン番号(0~7)。
      • mode: 設定するモード。
    • 戻り値: 設定が成功した場合はtrue、失敗した場合はfalse
  4. setDeviceAddr(uint8_t addr)
    • 概要: デバイスアドレスを変更します。
    • 引数:
      • addr: 新しいデバイスアドレス。
    • 戻り値: 設定が成功した場合はtrue、失敗した場合はfalse
  5. setServoAngle(uint8_t pin, uint8_t angle)
    • 概要: 指定したピンのサーボ角度を設定します。
    • 引数:
      • pin: 設定するピン番号。
      • angle: 設定する角度(0~180)。
    • 戻り値: 設定が成功した場合はtrue、失敗した場合はfalse
  6. setServoPulse(uint8_t pin, uint16_t pulse)
    • 概要: サーボのパルス幅を設定します。
    • 引数:
      • pin: 設定するピン番号。
      • pulse: パルス幅(単位: µs)。
    • 戻り値: 設定が成功した場合はtrue、失敗した場合はfalse
  7. setLEDColor(uint8_t pin, uint32_t color)
    • 概要: 指定したピンのLEDカラーを設定します。
    • 引数:
      • pin: 設定するピン番号。
      • color: RGB値(24ビット整数)。
    • 戻り値: 設定が成功した場合はtrue、失敗した場合はfalse
  8. setDigitalOutput(uint8_t pin, uint8_t state)
    • 概要: 指定したピンのデジタル出力を設定します。
    • 引数:
      • pin: 設定するピン番号。
      • state: 出力状態(0または1)。
    • 戻り値: 設定が成功した場合はtrue、失敗した場合はfalse
  9. setAllDigitalOutputs(uint8_t pins)
    • 概要: 全デジタル出力を一括設定します。
    • 引数:
      • pins: 出力状態を示す8ビット値。
    • 戻り値: 設定が成功した場合はtrue、失敗した場合はfalse
  10. getDigitalInput(uint8_t pin)
    • 概要: 指定したピンのデジタル入力を取得します。
    • 引数:
      • pin: 読み取るピン番号。
    • 戻り値: 入力がHIGHの場合はtrue、LOWまたは失敗時はfalse
  11. getAllDigitalInputs()
    • 概要: 全デジタル入力の状態を一括取得します。
    • 戻り値: 各ビットがピン状態を表す8ビット値(失敗時は0)。
  12. getAnalogInput(uint8_t pin, extio_anolog_read_mode_t bit = _8bit)
    • 概要: 指定したピンのアナログ入力値を取得します。
    • 引数:
      • pin: 読み取るピン番号。
      • bit: 解像度(_8bitまたは_12bit)。
    • 戻り値: 読み取ったアナログ値(失敗時は0)。
  13. getVersion()
    • 概要: ファームウェアバージョンを取得します。
    • 戻り値: バージョン番号(8ビット値)。

使い方の例

1. I2C通信の初期化

M5_EXTIO2 extio2;
if (extio2.begin(&Wire, 21, 22)) {
    Serial.println("EXTIO2 Initialized");
} else {
    Serial.println("EXTIO2 Initialization Failed");
}

2. ピンモードの設定

・全ピンを入力モードに設定する:

extio2.setAllPinMode(DIGITAL_INPUT_MODE);

・ピン2を出力モードに設定する:

extio2.setPinMode(2, DIGITAL_OUTPUT_MODE);

3. デジタル出力

・ピン3をHIGHに設定:

extio2.setDigitalOutput(3, 1);

・全ピンを一括設定:

extio2.setAllDigitalOutputs(0b10101010);

4. アナログ入力の読み取り

uint16_t analogValue = extio2.getAnalogInput(0, _12bit); 
Serial.println(analogValue);

m5Atom matrixの場合、通常のi2C(Wire: SDA=21, SCL=25)がすでにDisplay用で使われているので、
もう一つのi2C(Wire1: SDA=26, SCL=32)を使います。

これを使って前回のコードを直していきます(この件だいぶ悩みました…💦)