#include "I2Cdev.h"
#include "MPU6050.h"//https://github.com/ElectronicCats/mpu6050
#include "Wire.h"
#include <Adafruit_NeoPixel.h>//https://github.com/adafruit/Adafruit_NeoPixel

MPU6050 accelgyro;
Adafruit_NeoPixel tape(10, 2, NEO_GRB + NEO_KHZ800);//10個、D2ピン、タイプ

int ax, ay, az, tmp;//各軸の加速度+作業用tmp
int lax, lay, laz;//前回lastの加速度3軸
uint32_t last_change;//前回の変化値
word cnt;//色変化のタイミング用カウンタ

uint32_t col[] = {0xff0000, 0xff8000, 0xffff00, 0xff00, 0xffff, 0xff, 0x8000ff, 0xff80ff};//虹7色+ピンク
byte col_num;//上記の色番号

void led(byte num) {//その色番号で10LED光らせる
  for (byte i = 0; i < 10; i++)tape.setPixelColor(i, col[num]);
  tape.show();
}

void setup() {
  tape.begin();
  Wire.begin();
  accelgyro.initialize();
}

void loop() {
  accelgyro.getMotion6(&ax, &ay, &az, &tmp, &tmp, &tmp);
  uint32_t change = abs(ax - lax) + abs(ay - lay) + abs(az - laz);//各軸の変化の和
  if (change + last_change > 1000) {//振っているのなら
    if (cnt == 0) {
      led(col_num);
      col_num = (col_num + 1) % 7;
    }
    if (++cnt == 10)cnt = 0;
  } else {//振っていないなら
    led(7);
    cnt = 0;
  }

  lax = ax;//今回の値を保存
  lay = ay;
  laz = az;
  last_change = change;
  delay(100);
}