.NET Gadgeteer モジュールのデモ:Smart Multicolor LED Module ~ Part 1

.NET Gadgeteer のモジュール紹介シリーズ、Smart Multicolor LED モジュール です。
※名前の表記がちょっと混乱しているようで、Smart Multicolor LED だったり Multicolor LED だったりします。

 

Multicolor LED v2.1

見た目よりも高機能、というか使い勝手のよいカラーLED モジュールです。メソッドが多いので2回に分けて投稿しますね。

R, G, B 各色ごとに点灯/消灯だけではなく、フェードイン/アウトもできます。しかも非常に高輝度です。動作確認のつもりで見ていると残像が残ってしばらく大変なので、そこに注意ですw

私はまだ持っていないのですが、RGB 各色のオン/オフのみ、7色使える LED 7C というモジュールもあります。その分、LED 7C は本稿で紹介している Multicolor LED よりもリーズナブルです。目的に応じて使い分けるといいでしょうね。

 

Multicolor LED に話を戻して。機能は以下の通りです。

  • (色間違いを訂正)
  • RGB 各色の点灯/消灯、白色の点灯/消灯
  • 色指定して点灯
  • RGB 各色を指定して色を追加/削除
  • 1回だけ点滅/繰り返し点滅 ・・・次回 Part 2 で紹介
  • 1回だけアニメーション/繰り返しアニメーション ・・・次回 Part 2 で紹介
  • 現在の色を取得 ・・・次回 Part 2 で紹介
  • (Daisylink) ・・・モジュール同士をシーケンシャルに接続できる、次回 Part 2 で紹介

 

なかなか芸が細かいモジュールです。


(色間違いを訂正)

本来的な意味ではモジュールの機能ではないのですが、このモジュール、なぜか緑と青の色指定が間違っています。
おそらくはそれを前提に書かれたコードが期待とは異なる動作にならないようにとメソッドの挙動を変えていないんだと思います。ただ、今度は逆に正しい名前でメソッドを呼び出すとそれはそれで困る。

ということで、色間違いを訂正するためのプロパティが用意されています。GreenBlueSwapped プロパティです。最初に一度だけこれを呼び出してあげます。そんなもんだと思っておいてください。

 


RGB 各色の点灯/消灯、白色の点灯/消灯

赤、緑、青を単色で点灯したり消灯したりするメソッドです。それと3色を一緒に点灯して白色にするメソッドもあります。

各色の点灯は TurnRed, TurnGreen, TurnBlue メソッドです。消灯は TurnOff メソッド。白色の点灯は TurnWhite メソッドです。

こんなソースになります。

  1. using System.Threading;
  2. using Microsoft.SPOT;
  3.  
  4. namespace MultiColorDemo
  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.             multicolorLed.GreenBlueSwapped = true;
  12.  
  13.             DoDemo();
  14.  
  15.             // Use Debug.Print to show messages in Visual Studio’s "Output" window during debugging.
  16.             Debug.Print("Program Started");
  17.         }
  18.  
  19.         private void DoDemo()
  20.         {
  21.             while (true)
  22.             {
  23.                 multicolorLed.TurnRed();
  24.                 Thread.Sleep(1000);
  25.                 multicolorLed.TurnGreen();
  26.                 Thread.Sleep(1000);
  27.                 multicolorLed.TurnBlue();
  28.                 Thread.Sleep(1000);
  29.                 multicolorLed.TurnOff();
  30.                 Thread.Sleep(1000);
  31.                 multicolorLed.TurnWhite();
  32.                 Thread.Sleep(1000);
  33.                 multicolorLed.TurnOff();
  34.                 Thread.Sleep(1000);
  35.             }
  36.         }
  37.     }
  38. }

 

動作させるとこうなります。

 

どうでもいいですが、輝度が高すぎて困っていたら娘が雑貨のカバーを貸してくれました。せっかくなので・・・(なんか、ちょっとしたオシャレ雑貨みたいになったじゃないですかw)。

 


色指定して点灯

任意の色指定で点灯することもできます。TurnColor メソッドです。色は FromRGB で指定する方法と定義済みの名前を使う方法があります。

  1. using System.Threading;
  2. using Microsoft.SPOT;
  3. using GT = Gadgeteer;
  4.  
  5. namespace MultiColorDemo
  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.             multicolorLed.GreenBlueSwapped = true;
  13.  
  14.             DoDemo();
  15.  
  16.             // Use Debug.Print to show messages in Visual Studio’s "Output" window during debugging.
  17.             Debug.Print("Program Started");
  18.         }
  19.  
  20.         private void DoDemo()
  21.         {
  22.             while (true)
  23.             {
  24.                 multicolorLed.TurnColor(GT.Color.FromRGB(128, 128, 0));
  25.                 Thread.Sleep(1000);
  26.                 multicolorLed.TurnColor(GT.Color.FromRGB(0, 128, 128));
  27.                 Thread.Sleep(1000);
  28.                 multicolorLed.TurnColor(GT.Color.FromRGB(128, 0, 128));
  29.                 Thread.Sleep(1000);
  30.                 multicolorLed.TurnColor(GT.Color.Cyan);
  31.                 Thread.Sleep(1000);
  32.                 multicolorLed.TurnColor(GT.Color.Magenta);
  33.                 Thread.Sleep(1000);
  34.             }
  35.         }
  36.     }
  37. }

 

動画は・・・いらないですねw


RGB 各色を指定して色を追加/削除

現在の色に、赤、緑、青を足す/引くメソッドです。 AddRed, AddGreen, AddBlue, RemoveRed, RemoveGreen, RemoveBlue メソッドです。
例えば現在、赤だとすると AddGreen することで黄色になる、などの挙動です。他のメソッドも同様。

 

  1. using System.Threading;
  2. using Microsoft.SPOT;
  3. using GT = Gadgeteer;
  4.  
  5. namespace MultiColorDemo
  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.             multicolorLed.GreenBlueSwapped = true;
  13.  
  14.             DoDemo();
  15.  
  16.             // Use Debug.Print to show messages in Visual Studio’s "Output" window during debugging.
  17.             Debug.Print("Program Started");
  18.         }
  19.  
  20.         private void DoDemo()
  21.         {
  22.             while (true)
  23.             {
  24.                 multicolorLed.AddRed();
  25.                 Thread.Sleep(1000);
  26.                 multicolorLed.AddGreen();
  27.                 Thread.Sleep(1000);
  28.                 multicolorLed.AddBlue();
  29.                 Thread.Sleep(1000);
  30.  
  31.                 multicolorLed.RemoveRed();
  32.                 Thread.Sleep(1000);
  33.                 multicolorLed.RemoveGreen();
  34.                 Thread.Sleep(1000);
  35.                 multicolorLed.RemoveBlue();
  36.                 Thread.Sleep(1000);
  37.             }
  38.         }
  39.     }
  40. }

 

 

もちろんスリープを入れずに AddRed と AddGreen を連続して呼び出して現在の色に黄色を加える、などもできます。

AddXXX は R, G, B それぞれを 255 にする動きをします。それ以外を指定したい場合は SetRedIntensity, SetGreenIntensity, SetBlueIntensity メソッドを使います。

 

  1. using System.Threading;
  2. using Microsoft.SPOT;
  3.  
  4. namespace MultiColorDemo
  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.             multicolorLed.GreenBlueSwapped = true;
  12.  
  13.             DoDemo();
  14.  
  15.             // Use Debug.Print to show messages in Visual Studio’s "Output" window during debugging.
  16.             Debug.Print("Program Started");
  17.         }
  18.  
  19.         private void DoDemo()
  20.         {
  21.             while (true)
  22.             {
  23.                 multicolorLed.SetRedIntensity(128);
  24.                 Thread.Sleep(1000);
  25.                 multicolorLed.AddRed();
  26.                 Thread.Sleep(1000);
  27.  
  28.                 multicolorLed.TurnOff();
  29.                 multicolorLed.SetGreenIntensity(128);
  30.                 Thread.Sleep(1000);
  31.                 multicolorLed.AddGreen();
  32.                 Thread.Sleep(1000);
  33.  
  34.                 multicolorLed.TurnOff();
  35.                 multicolorLed.SetBlueIntensity(128);
  36.                 Thread.Sleep(1000);
  37.                 multicolorLed.AddBlue();
  38.                 Thread.Sleep(1000);
  39.                 multicolorLed.TurnOff();
  40.             }
  41.         }
  42.     }
  43. }

 

 

デモでは赤だけ、緑だけ、青だけでやっていますが、もちろん現在の黄色に対して SetBlueIntensity してもかまいません。

 

長くなったので今回はこの辺で。Multicolor LED の機能はまだ続きますが、今回の機能だけでもハイカラw でかっこいいデバイスが作れそうですよね。
続きは次回。

 


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

こんなデモをライブで見てみたい方は こちらのページ からお申し込みください。

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

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

.NET Gadgeteer モジュールのデモ:Smart Multicolor LED Module ~ Part 1 への1件のフィードバック

  1. ピンバック: .NET Gadgeteer モジュールのデモ:Smart Multicolor LED Module ~ Part 2 | 技術との戯れ

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中