コンテンツにスキップ

2.4 #201 3Axis I2C Brick

Overview

3軸加速度センサーを使用したBrickです。

I2Cで3軸の加速度データを取得することがきます。

センサー取得データについて

このBrickでは下の図の3軸の値を取得します。

それぞれ矢印の方向に力がかかるとプラス、逆方向ではマイナスとなります。

なお、このBrickを水平に置いた場合、重力がZ軸にかかっている状態となるので、X軸、Y軸が0に近く、Z軸のみ高い値となります。

Connecting

ADXL345 Datasheet

Document
ADXL345 Datasheet

Register

I2C Slave Address
0x53

Schematic

Library

ライブラリ名:「FaBo 201 3Axis ADXL345」

Sample Code 1

I2Cコネクタに接続した3Axis I2C Brickより3軸の加速度情報を取得し、シリアルモニタに出力します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
 @file accelerometer.ino
 @brief This is an Example for the FaBo 3AXIS I2C Brick.

   http://fabo.io/201.html

   Released under APACHE LICENSE, VERSION 2.0

   http://www.apache.org/licenses/

 @author FaBo<info@fabo.io>
*/

#include <Wire.h>
#include <FaBo3Axis_ADXL345.h>

FaBo3Axis fabo3axis;

void setup()
{
  Serial.begin(9600); // シリアルの開始デバック用

  Serial.println("Checking I2C device...");

  if(fabo3axis.searchDevice()){
    Serial.println("I am ADXL345");
  }
  Serial.println("Init...");
  fabo3axis.configuration();
  fabo3axis.powerOn();
}

void loop() {
  int x;
  int y;
  int z;

  fabo3axis.readXYZ(&x,&y,&z);

  Serial.print("x: ");
  Serial.print(x);
  Serial.print(", y: ");
  Serial.print(y);
  Serial.print(", z: ");
  Serial.println(z);

  delay(1000);
}

Sample Code 2

シングルタップとダブルタップを取得する例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
 @file accelerometer.ino
 @brief This is an Example for the FaBo 3AXIS I2C Brick.

   http://fabo.io/201.html

   Released under APACHE LICENSE, VERSION 2.0

   http://www.apache.org/licenses/

 @author FaBo<info@fabo.io>
*/


#include <Wire.h>
#include <FaBo3Axis_ADXL345.h>

FaBo3Axis fabo3axis;

void setup()
{
  Serial.begin(9600); // シリアルの開始デバック用

  Serial.println("Checking I2C device...");

  if(fabo3axis.searchDevice()){
    Serial.println("I am ADXL345");
    fabo3axis.configuration();
    fabo3axis.powerOn();
    fabo3axis.enableTap();  
  }

}

void loop() {

  byte tap = fabo3axis.readIntStatus();

  if(fabo3axis.isDoubleTap(tap)){
    Serial.println("Double Tap");
  } else if(fabo3axis.isSingleTap(tap)){
    Serial.println("Single Tap");
  }
  delay(10);
}

Parts

  • Analog Devices ADXL345

GitHub

  • https://github.com/FaBoPlatform/FaBo3Axis-ADXL345-Library