1. kitazaki

    No comment

    kitazaki
Changes in body
Source | HTML | Preview
@@ -1,50 +1,50 @@
# はじめに
<A HREF="https://qiita.com/advent-calendar/2019/m5stack">M5Stack Advent Calendar 2019</A> 17 日目の記事「<A HREF="https://qiita.com/kitazaki/items/005bda4e3c809ffaa9eb">M5Stack / M5StickC で Sonos を操作してみた。</A>」の発展形になります。
# やったこと
M5StickC のボタン操作で「曲の巻き戻し」「音楽再生の一時停止・再開」「曲の先送り」を行なっていましたが、M5StickC に搭載されているジャイロセンサー「MPU6886」を使用して M5StickC の回転操作でも「曲の巻き戻し」「曲の先送り」を行えるようにしました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/91a257c0-60b0-8480-f9bc-4fcf5552e745.png" width="50%">
## 動画
<A HREF="https://youtu.be/P7keDcvDNog"><img width="75%" alt="スクリーンショット 2020-01-12 15.53.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/58e3762d-e148-0b8d-6a16-d9499d8b5751.png"></A>
-# ジャイロセンサー (MPU6886) の動作確認
+## ジャイロセンサー (MPU6886) の動作確認
まずは簡単なコードを書いてジャイロセンサー (MPU6886) の動作を確認します。
Arduino IDE のシリアルプロッタの機能を使用してセンター値を見える化 (グラフ化) します。
M5StickC を動かしながらそれぞれの値がどのように変化するか観察します。
今回の場合は Y 軸ジャイロセンサー値 (gyroY) が ± 50.0 以上 (左回転の場合は -50.0以下、右回転の場合は +50.0以上) に変化した場合をトリガーにしました。
最初、加速度センサー値 (Accel) を使用する予定でしたが、 M5StickC の傾きに応じて加速度センサー値が変化するので、M5StickC の取り扱いを間違う (縦や横に置く) とセンサー値が変化して曲が変わってしまうため、今回の場合は不都合でした。
(ジャイロセンター値の変化)
<img width="75%" alt="getGyroData.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/e2d2e170-91e0-6ca9-b6d3-c7d098439287.png">
(加速度センサー値の変化)
<img width="75%" alt="getAccelData.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/3980c7db-c315-740a-ace6-7cde0e6228bb.png">
```c++:M5StickC_MPU6886.ino
#include <M5StickC.h>
float gyroX, gyroY, gyroZ; // ジャイロデータ取得 →回転(左90 0/-50/0, 右90 0/50/0)
float ax, ay, az; // 加速度データ取得 →傾き(X/Y/Z: 正 0/0/1, 左90 1/0/0, 右90 -1/0/0, 上90 0/-1/0, 下90 0/1/0)
void setup() {
Serial.begin(115200);
M5.begin();
M5.MPU6886.Init();
}
void loop() {
M5.MPU6886.getGyroData(&gyroX, &gyroY, &gyroZ);
M5.MPU6886.getAccelData(&ax, &ay, &az);
M5.Lcd.setCursor(0, 30);
M5.Lcd.printf("X:%7.2f\nY:%7.2f\nZ:%7.2f mg", gyroX * M5.MPU6886.gRes, gyroY * M5.MPU6886.gRes, gyroZ * M5.MPU6886.gRes);
Serial.printf("%7.2f,%7.2f,%7.2f\n", gyroX * M5.MPU6886.gRes, gyroY * M5.MPU6886.gRes, gyroZ * M5.MPU6886.gRes);
M5.Lcd.printf("X:%7.2f\nY:%7.2f\nZ:%7.2f mg", ax , ay , az );
Serial.printf("%7.2f,%7.2f,%7.2f\n", ax , ay , az);
delay(50);
}
```
-## ソースコード
+# ソースコード
<A HREF="https://github.com/kitazaki/sonos/blob/master/examples/Sonos_Controller_M5StickC_2/Sonos_Controller_M5StickC_2.ino">こちら</A> です。