前回に続き、NefryでGroveの加速度センサを使ってみます。
Grove - 3-Axis Digital Accelerometer(±1.5g)
スペックはこんな感じです。 Nefryだと3.3V対応しているセンサを使えるのでこのセンサーは問題なく使えます。
Working voltage: 3.0 - 5.5V
Off Mode Current: 0.4μA
Standby Mode Current: 2μA
Active Mode Current: 47 μA at 1 ODR
Test Range: ±1.5g
Sensitivity: 21LSB/g
Suli-compatible Library
ライブラリを読み込む
センサーを扱うために、Seeedの公式サイト経由でAccelerometer_MMA7660ライブラリをダウンロードして使います。
3軸の加速度に合わせてLEDの色を変える
こんな感じでセンサーを振ると方向によって色が変わるものを作ります。
- x軸方向 赤色
- y軸方向 緑色
- z軸方向 青色
Arduinoのサンプルプログラムに毛が生えたくらいですが以下がプログラムになります。
#include <Nefry.h>
#include <Wire.h>
#include "MMA7660.h"
MMA7660 accelemeter;
void setup()
{
Nefry.print("Grove 3-Axis Digital Accelerometer");
Nefry.setLed(0,0,0);
accelemeter.init();
}
void loop()
{
int8_t x;
int8_t y;
int8_t z;
float ax,ay,az;
accelemeter.getXYZ(&x,&y,&z);
Nefry.setLed(x,y,z,50);
Nefry.print("x = ");
Nefry.println(x);
Nefry.print("y = ");
Nefry.println(y);
Nefry.print("z = ");
Nefry.println(z);
accelemeter.getAcceleration(&ax,&ay,&az);
Nefry.println("accleration of X/Y/Z: ");
Nefry.print(ax);
Nefry.println(" g");
Nefry.print(ay);
Nefry.println(" g");
Nefry.print(az);
Nefry.println(" g");
Nefry.println("*************");
delay(500);
}