Arduino Groveシステムの使い方③
Groveモジュール動作検証第三弾です。
<温度・湿度センサ>
スターターキットには温度センサが含まれていますが、およその湿度も測りたかったので、改めて購入しました。ちなみに自分が購入したのは安物ですが、もっと高精度で測定レンジの広いプロ版もあります。こちらによれば、3.3V〜5.0Vで動作します。サンプルソースはこちら。ライブラリが必要になるので、ファイルを丸ごととってきて、Arduino IDEのlibrariles以下にコピーします。
“スケッチの例”から、”Humidity_Temprature_Sensor”の”DHTester”を実行すればOKですが、このサンプルはプロ版のセンサとかと共用なので、フラグを切り換える必要があります。適宜購入したものに合わせて切替てください。自分の場合は、
#define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301)
となります。これで、IDEのコンソールに計測結果が出てきますが、一応LCDモジュールにも表示させてみます。
息を吹きかけたりするとちゃんと値は変わるので、動作環境がシビアでなければ安いセンサでも大丈夫かなと。
<LEDバー>
これはスターターキットには含まれていないので、別途購入。3.0V〜5.5V駆動です。サンプルソースはこちら。ライブラリが必要になるので、Arduino IDEのlibrariesフォルダ以下にまるっとコピーします。その後、”スケッチの例”の”Grove_LED_Bar”からサンプルを実行しますが、3つあるので、それぞれ実行してみます。
まず”BasicControl”から。
ledIndeBitメソッドの引数に”0b000001101010101″と指定するとこう光るので、下10桁のビットで指定したとおりに光るみたいですね。
次に、”ControlSignLed”。
(↑荒いですがクリックで動いている様子が見れます)
setSingleLedメソッドをforループで回して、一個ずつスライドさせながら点灯させています。
最後に、”Level”。
(↑荒いですがクリックで動いている様子が見れます)
setLevelメソッドで値を指定すると、その名のとおり段階表示してくれます。
ライブラリのヘッダファイルを見てみると、他にメソッドは用意されていませんが、この3つだけあればとりあえず大丈夫でしょう。ちなみにどれもLEDの色は右端が赤、右から2番目めが黄(オレンジ)、他は緑になっていますが、これは元々組み込まれているLEDがそれらの色のようで、変更はできなそうです。
<音センサ>
スターターキットに含まれています。こちらによれば、動作電圧は4V-12V。ということは、Groveシールドの電圧は5Vにしとかなくてはダメですね。
サンプルソースはこちらの”Grove_Sound_Sensor”。サンプルは閾値を(thresholdValue)を500ぐらいにしたら、手をパンッと鳴らしたときLEDが光る、という感じで動きましたが、サンプルいじっていてちょっとハマったのが、loop内でのdelayの設定について。
サンプルの中では、loopの中にdelayが設定されていません。ちょっと考えれば当たり前で、音が鳴るのは一瞬なので、できるだけ早くloopを回さないとその一瞬が捉えられないんですね。LCDを使うときはいつもdelayに100を設定していたので、LCDに値を表示しようとしてうまくサウンドセンサが機能しなくてうーんとなってしまっていました。
ということで、LCDの代わりに先ほど使えるようになったLEDバーで表示するようにします。ちょっとログ見た感じでは、出力値は0〜1024っぽかったので、これを0〜10にマッピングして表示させます。ポイントだけ書くとこんな感じ。
// 定義 #define SOUND_SENSOR A2 LED_Bar bar(3, 2); int soundSensorValue = 0; // loopの中 soundSensorValue = analogRead(SOUND_SENSOR); bar.setLevel((int)((float)soundSensorValue/1024*10));
手をパンっとやると、一瞬バーが伸びます。
今回はここまで。後5個ぐらいあるけれど、全部紹介するかは未定です。
ディスカッション
コメント一覧
まだ、コメントがありません