KUMIKOMI NO SEKAI ~ #7 Sensing Movement & Sound
こんにちは。今回でビギナーキットの使い方説明は一通りお終いデス。サウンドセンサーと三軸加速度センサーを使ってみます。
関連モジュール
今回の関連モジュールは以下の通りです。
サウンドセンサーで音を検知してみる
サウンドセンサーからデータを読み出す方法は以前から使っているアナログ信号読み出し関数を使います。次のコードで簡単にデータを読み出すことができました。
int soundPin = A2;
void setup() {
Serial.begin(9600);
}
void loop(){
int soundState = analogRead(soundPin);
delay(100);
Serial.println(soundState);
}
プログラムをボードに書き込んで、Arduino IDEのツール ⇒ シリアルプロッタをクリックすると以下のようにサウンドセンサーから取得したデータが波形としてプロットされます。
低い山と高い山があって、低い山は静かにしている時の山です。高い山はサウンドセンサーを直接コンコン叩いた時の山です。感度はそんなに高くなく、直接触るぐらいしないと波形に変化はありませんでした。接触系のトラップには使えそうです。トラップっていつ使うねん・・・。以上
三軸加速度センサーで傾きを検知してみる
加速度センサーから情報を取得するには、特別なライブラリが必要になります。ライブラリのインストール方法は次の通りです。
1)ライブラリのzipをダウンロードする
以下のサイトのCode ⇒ Download ZIPをクリックでダウンロードできます。
2)Arduino IDEにZIP形式のライブラリをインストール
ツールバーのスケッチ ⇒ ライブラリをインクルード ⇒ .ZIP形式のライブラリをインクルードをクリックし、1)でダウンロードしたZIPファイルを選択します。これで完了。
以下のコードで加速度センサーの状態が取れます。
#include "LIS3DHTR.h"
#include <Wire.h>
LIS3DHTR<TwoWire> LIS;
#define WIRE Wire
void setup() {
Serial.begin(9600);
while (!Serial) {};
LIS.begin(WIRE, LIS3DHTR_ADDRESS_UPDATED); //IIC init
delay(100);
LIS.setOutputDataRate(LIS3DHTR_DATARATE_50HZ);
}
void loop() {
if (!LIS) {
Serial.println("LIS3DHTR didn't connect.");
while (1);
return;
}
//3 axis
Serial.print("x:"); Serial.print(LIS.getAccelerationX()); Serial.print(" ");
Serial.print("y:"); Serial.print(LIS.getAccelerationY()); Serial.print(" ");
Serial.print("z:"); Serial.println(LIS.getAccelerationZ());
delay(500);
}
プログラムをボードに書き込んだら、シリアルモニターをでデータを確認してみましょう。ボードを持って上下左右前後に動かすと、X軸、Y軸、Z軸の状態が変化するはずです。
これは、誰かがドアを開けたら警報が鳴るようなトラップに使えそうだ。うんうん。いや、だからいつ使うねん。
まとめ
Grove Biginner Kit for Arduinoはいかがだったでしょうか?ビギナーには持って来いのキットだと思います。勤め先の会社ではプログラミング教育事業も手掛けているので、会議の場で「こんなキットありまっせ」と紹介すると、「ええやん、使えそうやん」ってな反応でした。電子工作やプログラミングに興味のある、小学校高学年~中学生くらいの間の子ども達にはベストやなと。
今回せっかくキットを買ったので、自分が必要なシステムを作ってみようと企んでいます。上手く行ったら記事にしようと思います。