Arduinoで加速度センサMMA8452Qの使い方
この記事では、Arduinoで加速度センサの使い方を解説する。加速度センサは、MMA8452Qを搭載したSparkFunのモジュールを使用した。MMA8452Qは、フリースケール社の製造している三軸加速度センサで、I2C通信でアクセス、12ビットもしくは8ビットの分解能の選択が可能である。
また、ArduinoはArduino Uno Rev3を使用した。
Uno Rev.3、8 bit、AVR、ATmega328、USB-シリアルコンバータとしてプログラムされたATmega 16U2搭載
Amazon項目 | バージョン |
---|---|
Arduinoデバイス | Arduino Uno Rev3 |
加速度センサー | 3軸加速度センサー MMA8452Q(SparkFun) |
Arduino IDE | 1.8.13 |
パソコン | macOS Big Sur 11.0.1 |
ArduinoとMMA8452Qの配線
ArduinoとMMA8452Qの配線で注意したいのは、330Ωの抵抗を通してSCLとSDAを繋ぐこと。ArduinoのGPIOが5Vであるのに対し、MMA8452Qが3.3V基準なので破損を防ぐために抵抗でレベルシフトさせている。
MMA8452Qライブラリのインストール
加速度センサからデータを読み取るには、SparkFunが公開しているMMA8452QのArduinoライブラリを使うと簡単。下記のGitHubページからzipファイルをダウンロードする。
zipファイルを解凍し、フォルダを~/Document/Arduino/libraries/へ移動する。そして、Arduino IDEを再起動。
するとFile → Examples → SparkFun MMA8452Q Accelerometer以下にサンプルプログラムが表示される。
また、VS CodeのPlatform IOで開発する場合は、「SparkFun MMA8452Q」でライブラリ検索すれば簡単にインストールできる。
サンプルプログラム
サンプルプログラムを使用して、加速度をシリアルモニタやシリアルプロッターで表示させてみよう。
#include <Wire.h>
#include "SparkFun_MMA8452Q.h"
MMA8452Q accel;
void setup() {
Serial.begin(9600);
Wire.begin();
if (accel.begin() == false) {
Serial.println("Not Connected. Please check connections and read the hookup guide.");
while (1);
}
}
void loop() {
if (accel.available()) {
Serial.print(accel.getCalculatedX(), 3);
Serial.print("\t");
Serial.print(accel.getCalculatedY(), 3);
Serial.print("\t");
Serial.print(accel.getCalculatedZ(), 3);
Serial.println();
}
}
accel.getCalculatedXなどで取得される値は、重力加速度1gが単位となっている。また、Spark FunのMMA8452Qチュートリアルによれば、データの速度は800Hzであり、±2gまで測ることができるようだ。
SparkFun MMA8452Qのチュートリアルはこちら
こちらの記事も参考に
今回使用した製品はこちら
Uno Rev.3、8 bit、AVR、ATmega328、USB-シリアルコンバータとしてプログラムされたATmega 16U2搭載
AmazonArduinoの参考書
本書では、開発者自らが、Arduinoの哲学、ハードウェア、ソフトウェアの基礎を解説、誰にでもできる簡単なチュートリアルを行います。
Amazon最後まで読んでいただきありがとうございました。
「この記事が参考になったよ」という方は、ぜひ記事をシェアをしていただけるととても嬉しいです。
今後も有益な記事を書くモチベーションにつながりますので、どうかよろしくお願いいたします。↓↓↓↓↓↓↓