前回記事
の続きです。
やること
6軸センサーのGY-521(MPU6050)の値をarduino(手元のものはTeensy3.2)で読み取り、そのローデータをシリアルに書き出します。
6軸センサーとは?
加速度センサーは重力加速度を検知し、水平に対する傾きを捉えることができます。
ジャイロセンサーは角速度を検知し、回転の動きを捉えることができます。
それぞれxyz3軸ずつ、合計6軸のデータを検出できるのが6軸センサーです。
MPU6050のデータを使いやすく補正・加工して出力するパッケージの一つがGY-521です。
準備物・実施環境
- Arduino系のもの(今回の狙いはTeensy3.2)
- 6軸センサ GY-521(MPU6050)
- 手元の環境はMac
接続
GY-521 | Arduino |
---|---|
VCC | 5V |
GND | GND |
SCL | SCL(Pin19) |
SDA | SDA(Pin18) |
XDA | none |
AD0 | none |
INT | none |
SCL0はArduinoUno,Teensy3.2共にPin19です。
SDA0はArduinoUno,Teensy3.2共にPin18です。
接続は電源2本、信号2本の計4本で動きます。
プログラム
Arduino系のスケッチ
#include "MPU6050.h"
MPU6050 accelgyro;
int16_t ax, ay, az;//加速度 int16_tは2バイトの符号付き整数
int16_t gx, gy, gz;//角速度 同上
void setup()
{
Wire.begin();
Serial.begin(115200);
accelgyro.initialize();//I2Cデバイスの初期化
delay(300);
}
void loop()
{
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
Serial.print(ax); Serial.print(", ");
Serial.print(ay); Serial.print(", ");
Serial.print(az); Serial.print(" : ");
Serial.print(gx); Serial.print(", ");
Serial.print(gy); Serial.print(", ");
Serial.print(gz); Serial.println("");
delay(100);//0.1秒停止。停止時間はお好みで調整。
}
エラーが出る場合(2021.01.03追記)
冒頭の #include "MPU6050.h" のところでエラーが出る場合は、ライブラリをインポートします。
メニューの「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」でMPU6050を検索し、「MPU6050」を導入すればOKです。
実行
超シンプルですが、これだけでシリアルモニタ上でずらりとデータが表示されるのが確認できるようになります。
加速度x,加速度y,加速度z : ジャイロx,ジャイロy,ジャイロz の順で書き出されます。

次回記事
このセンサーの値を使ってProcessing3で書いた画面内のオブジェクトをグリグリ動かします。