#author("2016-05-29T17:38:26+09:00","default:qua","qua") *アナログ3軸加速度センサ KXR94-2050 [#r18ee99c] #ref(http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/img/kxr942050.jpg,200x150) -[[販売元情報ページ:http://akizukidenshi.com/catalog/g/gM-05153/]] ** 配線 [#p4d35b9d] |ピン番号|名称|意味| |1|Vdd|電源(Arduinoの5Vへ)| |2|Enable|動作モード(通常はArduinoの5Vへ)| |3|GND|Ground(ArduinoのGNDへ)| |4|Vmux|未使用| |5|Self Test|セルフテスト(ArduinoのGNDへ)| |6|Out X|X軸出力(Arduinoのアナログ入力へ)| |7|Out Y|Y軸出力(Arduinoのアナログ入力へ)| |8|Out Z|Z軸出力(Arduinoのアナログ入力へ)| ピン番号は1から反時計回りで8までで、1, 4, 5, 8番のみ印字。1→4がX軸正方向、1→8がY軸正方向、下から上がZ軸正方向。出力は、Vddの5分の1が重力加速度に対応。すなわち~ 加速度=9.8*(入力値-512)/204.8[m/s^2] ** プログラミング例 [#o992ff1f] // アナログ入力ピン0,1,2の値をモニタするためのスケッチ // IDEのツール→シリアルモニタで数値を表示 const int Px = 0; // 入力ピン番号 const int Py = 1; // 入力ピン番号 const int Pz = 2; // 入力ピン番号 const int Delay = 100; // データ入力時間間隔(ミリ秒) void setup() { // Arduinoとコンピュータの間の通信を準備 // データ通信速度は9600ビット/秒 Serial.begin(9600); } void loop() { String xyz = "("; float ax = (analogRead( Px )-512)*9.8/204.8; float ay = (analogRead( Py )-512)*9.8/204.8; float az = (analogRead( Pz )-512)*9.8/204.8; // 入力ピンから読み取って、 xyz = String("(") + ax + ", " + ay + ", " + az + ")" ; // コンピュータへ送信 Serial.println( xyz ); // 時間間隔だけ待つ delay( Delay ); } #author("2016-05-29T17:43:14+09:00","default:qua","qua") * デジタル3軸加速度センサ MMA8451 [#h77cc4ff] #ref(http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/img/mma8451.jpg,200x178) -[[メーカーWebページ:https://www.adafruit.com/products/2019]] ** 配線 [#u17bb071] I2Cアドレス 0x1C / 0x1D |ピン|意味|h |Vin|電源(Arduinoの5Vへ)| |GND|Ground(ArduinoのGNDへ)| |3Vo|3V出力| |I2|割り込み2| |I1|割り込み1| |SCL|I2Cクロック(ArduinoのA5へ)| |SDA|I2Cデータ(ArduinoのA4へ)| |A|3Voに接続→I2Cアドレスを0x1Cから0x1Dに変更| ** プログラミング [#d2640ebd] -準備~ まず、次の2つのライブラリを[[インストール:Arduinoのライブラリ_]]する。 --[[ライブラリMMA8451.zip:http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/lib/MMA8451.zip]] --[[共通センサライブラリAdafruitSensor.zip:http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/lib/AdafruitSensorzip]] - ライブラリの使用 -- ライブラリのインクルード #include <Wire.h> #include <Adafruit_MMA8451.h> #include <Adafruit_Sensor.h> -- 入出力用オブジェクトの生成 Adafruit_MMA8451 mma = Adafruit_MMA8451(); -- setup()ですること~ I2Cアドレスを指定して、センサの使用を開始し、測定範囲を2G, 4G, 8G(Gは重力加速度)から選ぶ。 I2Cアドレスは省略可能。 mma.begin(0x1c); mma.setRange(MMA8451_RANGE_2_G); -- センサデータの利用~ loop()内などで、 mma.read() でデータを取得する。mma.x, mma.y, mma.zに3軸方向の加速度が入っている。値の範囲は-8096から+8095で、測定範囲の±2G、±4G、±8Gに対応する。人間がわかりやすいデータを得るには、次を実行する。 sensors_event_t event; mma.getEvent(&event); event.acceleration.xなどで、加速度の値をm/s^2単位で得ることができる。