.NET Gadgeteer モジュールのデモ:Barometer Module

.NET Gadgeteer のモジュール紹介シリーズ、今回は Barometer モジュールです。
名前だけだと「???」という方もいるかもしれませんが、気温、気圧を測定するモジュールです。

Barometer Module

 

照度センサーなら暗くなったら自動で電灯をつける、バロメーターセンサーならば暑くなったら扇風機を動かす、・・・”そのまんま” すぎる用途ですが、アイデアが広がりやすいモジュールですね。

 

Barometer の機能は以下の通り。

  • 気温、気圧の測定(取得)
  • 測定間隔の設定

当然といえば当然ですが、これだけです。ただし、このあとで説明しますが、何かの契機に一度だけ測定するメソッドと継続して測定し続けるメソッドとがあります。

 


気温、気圧の測定 (一度だけ測定)

気温、気圧を一度だけ測定するには RequestMeasurement メソッドを呼び出します。とはいっても大抵は何かの契機で繰り返し測定するはずですから、以下のコードではタイマーで定期的に測定をしています。

測定は非同期で行われて、測定結果はイベントで返ってきます。MeasurementCompleteEventHandler イベントハンドラーを定義します。

ひとまず Debug.Print で結果を表示するコードは以下の通りです。

  1. using Microsoft.SPOT;
  2. using GT = Gadgeteer;
  3. using Gadgeteer.Modules.Seeed;
  4.  
  5. namespace BarometerDemo
  6. {
  7.     public partial class Program
  8.     {
  9.         // This method is run when the mainboard is powered up or reset.  
  10.         void ProgramStarted()
  11.         {
  12.             barometer.MeasurementComplete += new Barometer.MeasurementCompleteEventHandler(barometer_MeasurementComplete);
  13.  
  14.             var timer = new GT.Timer(1000);
  15.             timer.Tick += new GT.Timer.TickEventHandler(timer_Tick);
  16.             timer.Start();
  17.  
  18.  
  19.             // Use Debug.Print to show messages in Visual Studio’s "Output" window during debugging.
  20.             Debug.Print("Program Started");
  21.         }
  22.  
  23.         void timer_Tick(GT.Timer timer)
  24.         {
  25.             barometer.RequestMeasurement();
  26.         }
  27.  
  28.         void barometer_MeasurementComplete(Barometer sender, Barometer.SensorData sensorData)
  29.         {
  30.             Debug.Print("Temp=" + sensorData.Temperature.ToString() + ", Press=" + sensorData.Pressure.ToString());
  31.         }
  32.     }
  33. }

 

実行するとこんな風になります。

 


気温・気圧の測定(継続して測定)と測定間隔の設定

バロメーターは継続して測定することが多いということでしょうか、タイマーで繰り返し計測する方法だけではなく、あらかじめ間隔を指定して継続して測定する方法も用意されています。

測定間隔の設定は ContinuousMeasurementInterval プロパティ(TimeSpan 型)です。
継続して測定するには StartContinuousMeasurements メソッドを使用します。これで指定した間隔ごとに MeasurementCompleteEventHandler イベント が発行されます。

ちなみに測定を停止するには StopContinuousMeasurements メソッドを呼び出します。タイマーを止めるのと同じですね。

実際にコードを書いてみると分かりますが、Timer を使うよりもコードが分かりやすくなります。

  1. using System;
  2. using Microsoft.SPOT;
  3. using GT = Gadgeteer;
  4. using Gadgeteer.Modules.Seeed;
  5.  
  6. namespace BarometerDemo
  7. {
  8.     public partial class Program
  9.     {
  10.         // This method is run when the mainboard is powered up or reset.  
  11.         void ProgramStarted()
  12.         {
  13.             barometer.MeasurementComplete += new Barometer.MeasurementCompleteEventHandler(barometer_MeasurementComplete);
  14.  
  15.             barometer.ContinuousMeasurementInterval = new TimeSpan(0, 0, 1);
  16.             barometer.StartContinuousMeasurements();
  17.  
  18.             // Use Debug.Print to show messages in Visual Studio’s "Output" window during debugging.
  19.             Debug.Print("Program Started");
  20.         }
  21.  
  22.         void barometer_MeasurementComplete(Barometer sender, Barometer.SensorData sensorData)
  23.         {
  24.             Debug.Print("Temp=" + sensorData.Temperature.ToString() + ", Press=" + sensorData.Pressure.ToString());
  25.         }
  26.     }
  27. }

 

実行結果は先ほどと変わらないので省略。

 


Debug.Print ではない、もう少しちゃんとしたデモにしてみます。

Character Display に測定値を表示してみることにします。接続はこんな感じ。

image

測定完了のイベントハンドラーを書き換えて、Character Display に表示するようにします。せっかくなので 28度を超えたらディスプレイのバックライトを点灯してみます。

  1. using System;
  2. using Microsoft.SPOT;
  3. using GT = Gadgeteer;
  4. using Gadgeteer.Modules.Seeed;
  5. using Gadgeteer.Modules.GHIElectronics;
  6.  
  7. namespace BarometerDemo
  8. {
  9.     public partial class Program
  10.     {
  11.         // This method is run when the mainboard is powered up or reset.  
  12.         void ProgramStarted()
  13.         {
  14.             barometer.MeasurementComplete += new Barometer.MeasurementCompleteEventHandler(barometer_MeasurementComplete);
  15.  
  16.             barometer.ContinuousMeasurementInterval = new TimeSpan(0, 0, 1);
  17.             barometer.StartContinuousMeasurements();
  18.  
  19.             // Use Debug.Print to show messages in Visual Studio’s "Output" window during debugging.
  20.             Debug.Print("Program Started");
  21.         }
  22.  
  23.         void barometer_MeasurementComplete(Barometer sender, Barometer.SensorData sensorData)
  24.         {
  25.             char_Display.Clear();
  26.             char_Display.PrintString("Temp =" + sensorData.Temperature.ToString().Substring(0, 5));
  27.             char_Display.SetCursor(1, 0);
  28.             char_Display.PrintString("Press=" + sensorData.Pressure.ToString().Substring(0, 6));
  29.  
  30.             char_Display.SetBacklight(sensorData.Temperature > 28.0);
  31.         }
  32.     }
  33. }

 

実行するとこうなります。

 


次回の技術ひろば.net の勉強会は 4月20日(土) の開催です。

申し込みサイトはまだありませんが(すみません・・・)、ご都合の付く方は今のうちにカレンダーに印を付けておいてください。
瀬尾への連絡方法をご存じの方は、事前にご連絡いただけるとさらにうれしいです。

会場も無事決まり、受付を始めました。こちらのページ からお申し込みください。

皆で .NET Gadgeteer で楽しみましょう!!

広告
カテゴリー: .NET Micro Framework タグ: , パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中