# I2C
M5StackのGrove-Aポート(I2C)を制御するクラスです。
あらかじめ M5.Begin()でI2C通信が初期化されている必要があります。
## writeCommand()
**構文:**
bool writeCommand(uint8_t address, uint8_t subAddress);
**説明:**
指定のアドレスに書きこみます。
パラメータがない場合に使います。
**引数**
| 引数 |型 |説明 |
| --- | --- | --- |
| address | uint8_t |スレーブアドレス |
| subAddress | uint8_t |機能アドレス |
**戻り値:**
| 値 |説明 |
| --- | --- |
|true|送信成功。|
|false|送信失敗。|
## writeByte()
**構文:**
bool writeByte(uint8_t address, uint8_t subAddress, uint8_t data);
**説明:**
指定のアドレスに書きこみます。
パラメータ1つある場合に使います。
**引数**
| 引数 |型 |説明 |
| --- | --- | --- |
| address | uint8_t |スレーブアドレス |
| subAddress | uint8_t |機能アドレス |
| data | uint8_t |パラメータ |
**戻り値:**
| 値 |説明 |
| --- | --- |
|true|送信成功。|
|false|送信失敗。|
## writeBytes()
**構文:**
bool writeBytes(uint8_t address, uint8_t subAddress, uint8_t *data,uint8_t length);
**説明:**
指定のアドレスに書きこみます。
パラメータが複数ある場合に使います。
**引数**
| 引数 |型 |説明 |
| --- | --- | --- |
| address | uint8_t |スレーブアドレス |
| subAddress | uint8_t |機能アドレス |
| data | uint8_t * |パラメータ配列の先頭 |
| length | uint8_t |パラメータ長 |
**戻り値:**
| 値 |説明 |
| --- | --- |
|true|送信成功。|
|false|送信失敗。|
## readByte()
**構文:**
bool readByte(uint8_t address, uint8_t *result);
**説明:**
指定のアドレスから読み込みます。
読み込み前に送信するデータがなく、返答が1バイトの場合に使います。
**引数**
| 引数 |型 |説明 |
| --- | --- | --- |
| address | uint8_t |スレーブアドレス |
| result | uint8_t * |結果格納先 |
**戻り値:**
| 値 |説明 |
| --- | --- |
|true|読込成功。|
|false|読込失敗。|
## readByte()
**構文:**
bool readByte(uint8_t address, uint8_t subAddress,uint8_t *result);
**説明:**
指定のアドレスから読み込みます。
読み込み前に送信するデータが機能アドレスのみで、返答が1バイトの場合に使います。
**引数**
| 引数 |型 |説明 |
| --- | --- | --- |
| address | uint8_t |スレーブアドレス |
| subAddress | uint8_t |機能アドレス |
| result | uint8_t * |結果格納先 |
**戻り値:**
| 値 |説明 |
| --- | --- |
|true|読込成功。|
|false|読込失敗。|
## readBytes()
**構文:**
bool readBytes(uint8_t address, uint8_t count,uint8_t * dest);
**説明:**
指定のアドレスから読み込みます。
読み込み前に送信するデータがなく、返答が複数ある場合に使います。
**引数**
| 引数 |型 |説明 |
| --- | --- | --- |
| address | uint8_t |スレーブアドレス |
| count | uint8_t |要求バイト数 |
| result | uint8_t * |結果格納先 |
**戻り値:**
| 値 |説明 |
| --- | --- |
|true|読込成功。|
|false|読込失敗。|
## readBytes()
**構文:**
bool readBytes(uint8_t address, uint8_t subAddress, uint8_t count, uint8_t * dest);
**説明:**
指定のアドレスから読み込みます。
読み込み前に送信するデータが機能アドレスのみで、返答が複数ある場合に使います。
**引数**
| 引数 |型 |説明 |
| --- | --- | --- |
| address | uint8_t |スレーブアドレス |
| subAddress | uint8_t |機能アドレス |
| count | uint8_t |要求バイト数 |
| result | uint8_t * |結果格納先 |
**戻り値:**
| 値 |説明 |
| --- | --- |
|true|読込成功。|
|false|読込失敗。|
## scanID()
**構文:**
bool readBytes(bool *result);
**説明:**
I2Cバス上のデバイス存在確認をおこないます。
**引数**
| 引数 |型 |説明 |
| --- | --- | --- |
| result | bool * |結果格納先 (128バイト) |
**戻り値:**
| 値 |説明 |
| --- | --- |
|true|読込成功。|
|false|読込失敗。|
**使用例;**
```clike
bool result[0x80];
M5.I2C.scanID(&result[0]);
```