.NET Gadgeteer モジュールのデモ:LED7R

ようやく少しだけ落ち着いてきた瀬尾です、こんにちは。(まだいろいろあるけど)

4月20日(土) に、.NET Micro Framework に「触れる」勉強会 を開催するのに先だって、いくつかのモジュールの使い方を紹介していきたいと思います。
とは言っても、基本的には 「何かの信号を取得するモジュール」か「何かを出力/表示するモジュール」 のどちらかに分類されるので、複雑なメソッドや難解なプロパティはまずありませんし、数も限られています。
なので、どんなモジュールがあるか(どんなモジュールを瀬尾が持っているか)の紹介になりそう。

「これから .NET Micro Framework / .NET Gadgeteer を始めてみようかな」という人にも入手しやすいように、メインボードはできるだけ FEZ Cerberus を使ってみます、一番お手頃価格なので。

FEZ Cerberus Mainboard

 


最初に LED7R モジュール を紹介します。
何かを出力しないことには、どう動いているか全くわからないですからね。それに LED の点灯・消灯は組み込みっぽくて楽しいですし。

LED7R Module

このモジュールは文字通り LED が7個配置されています。上の図で12時の方向の LED が 1番、そこから時計回りに 2~6番の LED が円周上に並んでいます。中央にもう一つ LED があって、これが 7番 LED。

LED7R の操作は以下の通り。

  • LED の点灯/消灯
  • LED 点灯のアニメーション

 


LED の点灯/消灯

LED を点灯するメソッドは TurnLightOn、消灯するメソッドは TurnLightOff です。
どちらも対象の LED 番号を指定します。

例えば、1番 LED を点灯するには、

led7r.TurnLightOn(1);

ですね。

TurnLigntOn は第2引数を取ることもできて、true を指定することで指定した LED だけを排他的に点灯させることができます。TurnLightOff で他の LED を消灯する手間が要らなくなります。

具体的なコードはこんな感じ、ごくシンプルですが。

  1. using System.Threading;
  2. using Microsoft.SPOT;
  3.  
  4. namespace Led7rDemo
  5. {
  6.     public partial class Program
  7.     {
  8.         // This method is run when the mainboard is powered up or reset.  
  9.         void ProgramStarted()
  10.         {
  11.             // Use Debug.Print to show messages in Visual Studio’s "Output" window during debugging.
  12.             Debug.Print("Program Started");
  13.  
  14.             DoDemo();
  15.         }
  16.  
  17.         private void TurnAllLightsOff()
  18.         {
  19.             for (int i = 1; i <= 7; i++)
  20.             {
  21.                 led7r.TurnLightOff(i);
  22.             }
  23.         }
  24.  
  25.         private void TurnAllLightsOn()
  26.         {
  27.             for (int i = 1; i <= 7; i++)
  28.             {
  29.                 led7r.TurnLightOn(i);
  30.             }
  31.         }
  32.  
  33.         private void IncrementalLightsOn()
  34.         {
  35.             for (int i = 1; i <= 6; i++)
  36.             {
  37.                 led7r.TurnLightOn(i);
  38.                 Thread.Sleep(500);
  39.             }
  40.         }
  41.  
  42.         private void DoDemo()
  43.         {
  44.             TurnAllLightsOff();
  45.  
  46.             while (true)
  47.             {
  48.                 IncrementalLightsOn();
  49.  
  50.                 led7r.TurnLightOn(7, true);
  51.                 Thread.Sleep(500);
  52.  
  53.                 TurnAllLightsOff();
  54.                 Thread.Sleep(500);
  55.  
  56.                 TurnAllLightsOn();
  57.                 Thread.Sleep(500);
  58.  
  59.                 TurnAllLightsOff();
  60.                 Thread.Sleep(500);
  61.             }
  62.         }
  63.     }
  64. }

モジュールの接続はこんな感じ。

実際に動作させるとこんな感じ。

 


LED 点灯のアニメーション

上のデモでは TurnLightOn メソッドを順番に呼び出すことで 1~6 番の LED を点灯させましたが、実はこれと同じことを実現するメソッドがあらかじめ用意されています。Animate メソッドです。

引数を 4個取ります。

  • 第1引数・・・アニメーションの時間間隔
  • 第2引数・・・時計回りの点灯/消灯ならば true、反時計回りは false
  • 第3引数・・・点灯ならば true、消灯ならば false
  • 第4引数・・・前の点灯状態を保持する場合は true、今回のアニメーションの LED のみを点灯する場合は false

例えば、Animate(500, true, true, true); のようにします。具体的なコードで示すとこんな感じ。

  1. using System.Threading;
  2. using Microsoft.SPOT;
  3.  
  4. namespace Led7rDemo
  5. {
  6.     public partial class Program
  7.     {
  8.         // This method is run when the mainboard is powered up or reset.  
  9.         void ProgramStarted()
  10.         {
  11.             // Use Debug.Print to show messages in Visual Studio’s "Output" window during debugging.
  12.             Debug.Print("Program Started");
  13.  
  14.             DoDemo();
  15.         }
  16.  
  17.         private void TurnAllLightsOff()
  18.         {
  19.             for (int i = 1; i <= 7; i++)
  20.             {
  21.                 led7r.TurnLightOff(i);
  22.             }
  23.         }
  24.  
  25.         private void DoDemo()
  26.         {
  27.             TurnAllLightsOff();
  28.  
  29.             while (true)
  30.             {
  31.                 led7r.Animate(500, true, true, false);
  32.                 led7r.Animate(500, true, false, true);
  33.             }
  34.         }
  35.     }
  36. }

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

 

上のコードの while 文を次のように変更すると、排他的な点灯のアニメーションになります。

  1. while (true)
  2. {
  3.     led7r.Animate(500, true, true, false);
  4. }

 

 

なんかこれだけでも楽しいですねw


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

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

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

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

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

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中