Grove IoT スターターキット for SORACOM で加速度センサーを使う

ライブラリー違いで２つのプログラムを書いてみました。
加速度センサーの Grove は I2C に接続します。

ADXL345.h を使う方法

```text:accelerometer_adxl/accelerometer_adxl.ino
// ---------------------------------------------------------------
/*
	accelerometer_adxl.ino

					Aug/06/2021
*/
// ---------------------------------------------------------------
#include <WioLTEforArduino.h>
#include <ADXL345.h>

#define INTERVAL    (5000)

WioLTE Wio;
ADXL345 Accel;

// ---------------------------------------------------------------
void setup()
{
	delay(200);

	SerialUSB.println("");
	SerialUSB.println("*** START ***");
	
	SerialUSB.println("### I/O Initialize.");
	Wio.Init();
	
	SerialUSB.println("### Power supply ON.");
	Wio.PowerSupplyGrove(true);
	delay(500);
	Accel.powerOn();
	
	SerialUSB.println("### Setup completed.");
}

// ---------------------------------------------------------------
void loop()
{
	int value[3];
	Accel.readXYZ(&value[0], &value[1], &value[2]);

	SerialUSB.print("ADXL: X: ");
	SerialUSB.print(value[0]);
	SerialUSB.print(" Y: ");
	SerialUSB.print(value[1]);
	SerialUSB.print(" Z: ");
	SerialUSB.println(value[2]);

	Wio.LedSetRGB(0, 0, 1);	
	delay(INTERVAL / 2);
	Wio.LedSetRGB(0, 0, 0);	
	delay(INTERVAL / 2);
}

// ---------------------------------------------------------------
```

Wire.h を使う方法

```text:accelerometer_wire/accelerometer_wire.ino
// ---------------------------------------------------------------
/*
	accelerometer_wire.ino

						Aug/06/2021
*/
// ---------------------------------------------------------------
#include <Wire.h>

#define INTERVAL	(5000)
 
// デバイスアドレス(スレーブ)
uint8_t DEVICE_ADDRESS = 0x53;	
 
// XYZレジスタ用のテーブル(6byte)
uint8_t RegTbl[6];	

// ---------------------------------------------------------------
void setup() {
	// マスタとしてI2Cバスに接続する
	Wire.begin();			 
 
	// DATA_FORMAT(データ形式の制御) 
	Wire.beginTransmission(DEVICE_ADDRESS);	
		// DATA_FORMATのアドレス		
		Wire.write(0x31);
		// 「最大分解能モード」 及び 「±16g」 (0x0B == 1011)
		Wire.write(0x0B);	
		// 「10bit固定分解能モード」 及び　「±16g」にする場合 (0x03 == 0011)
		// Wire.write(0x03);
	Wire.endTransmission();
 
	// POWER_TCL(節電機能の制御) 
	Wire.beginTransmission(DEVICE_ADDRESS);	
		// POWER_CTLのアドレス		
		Wire.write(0x2d);
		// 測定モードにする
		Wire.write(0x08);	
	Wire.endTransmission();
}
 
// ---------------------------------------------------------------
void loop() {
	// XYZの先頭アドレスに移動する
	Wire.beginTransmission(DEVICE_ADDRESS);
	Wire.write(0x32);
	Wire.endTransmission();
	
	// デバイスへ6byteのレジスタデータを要求する
	Wire.requestFrom(DEVICE_ADDRESS, 6);
	 
	// 6byteのデータを取得する
	int i;
	for (i=0; i< 6; i++){
		while (Wire.available() == 0 ){}
		RegTbl[i] = Wire.read();
	}
 
	// データを各XYZの値に変換する(LSB単位)
	int16_t xx = (((int16_t)RegTbl[1]) << 8) | RegTbl[0];
	int16_t yy = (((int16_t)RegTbl[3]) << 8) | RegTbl[2];
	int16_t zz = (((int16_t)RegTbl[5]) << 8) | RegTbl[4];	
 
	SerialUSB.print("WIRE: X: ");
	SerialUSB.print( xx);
	SerialUSB.print(" Y: ");
	SerialUSB.print( yy);
	SerialUSB.print(" Z: ");
	SerialUSB.print( zz);
	SerialUSB.println("");
 
	delay(INTERVAL);
}

// ---------------------------------------------------------------
```

テスト方法
![IMG_20210806_161243.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/7344849c-fe73-6275-2e19-bf2b7b41153f.jpeg)

ADXL を走らせてから、WIRE を走らせた結果
ほぼ、同じ値です。
![accell_aug06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/b3cbf03d-7888-b819-71e0-39c7c571869a.png)

参考ページ
[3軸加速度センサー(ADXL345)の使い方 - I2C版 [Arduino]](https://www.petitmonte.com/robot/howto_adxl345_i2c.html)