GR-PEACH が発売され、ネット上にも記事が見つかるようになってきました。
お待たせしました、そろそろみんなで PinKit を楽しみましょう!
「GR-PEACH についてはしばらく触れないでおこう」ということで情報公開を自粛していましたが、すでに他の方が書いた情報が出回っているので、私もそろそろ書いたり喋ったりしてもいいでしょう。(笑)
.NET Micro Framework の基本中の基本、入出力ポートについて3回(くらい)に分けて紹介します。
今回は OutputPort がテーマです。
- 第1回(今回) ・・・ OutputPort
- 第2回 ・・・ InputPort
- 第3回 ・・・ InterruptPort
なお、これらのポートは “GPIO” (= General Purpose I/O) といい、文字通り汎用的に利用できる入出力端子です。このため、どのポートを入力として使用するか、出力として使用するかを宣言するだけで用途を限定せずに利用できます。
GR-PEACH の基本的な扱い方の説明は省略します。このあたりは マイクロソフトの太田さんのブログ に詳しい説明があるので、そちらを参照してください。
(リクエストがあれば私も書きますが)
■ OutputPort
OutputPort は文字通り、出力ポートです。もう少し書くと、デジタル出力用のポートです。
例えば、LED、ディスプレイ、モーターなどを OutputPort に接続します。
OutputPort は以下のように宣言します。
var led = new OutputPort(<ポート番号>, <出力の初期値>);
何番ポートに何が繋がっているのか、あるいは何番ピンが繋がっているのかは、回路によって異なります。回路図や開発者向けの資料などで確認する必要があります。
GR-PEACH, GR-SAKURA の LED については後述。
OutputPort には Write メソッドがあります。
Write(<true または false>);
High を出力するには引数を true に、Low を出力するには false にします。簡単で分かりやすいですね。
■ GR-PEACH のLED
GR-PEACH には、ボード上に LED が4個載っています。(他に給電状態を示す LED も載っていますが、アプリでコントロールできないのでここでは数えません)
LED種類 | ポート番号 |
ユーザーLED | 0x6c |
赤色LED | 0x6d |
緑色LED | 0x6e |
青色LED | 0x6f |
各 LED の用途は自由ですが、ユーザーLEDはアプリの動作状態を示すために使うといいと思います。何か処理を実行した時に点滅させるなど、どうでしょう。
マルチカラーLED (RGB LED) は、例えば、センサー値が正常域ならば青く点灯、危険域に達したら赤く点滅など、うまく使うと格好いいですね。
■ GR-SAKURA の LED
GR-SAKURA にも4個の LED が載っていますが、PEACH とは違ってマルチカラーではなく、4個の LED が一列に並んでいます。
LED番号 | ポート番号 |
LED1 | 0x50 |
LED2 | 0x51 |
LED3 | 0x52 |
LED4 | 0x56 |
余談ですが、私個人としては GR-SAKURA の LED は好きです。簡易グラフ的な使い方や LED 点滅でアニメーションができますよね。
■ OutputPort のコード例 ~ GR-PEACH / GR-SAKURA の LED 点灯・消灯 ~
本稿の最後に、OutputPort のコード例として GR-PEACH の LED を点灯・消灯するコードを載せます。
コンパイルするには、Microsoft.SPOT.Hardware の参照を追加する必要があります。
GR-SAKURA ではコメントを参考に一部書き換えてください。
using System.Threading; using Microsoft.SPOT.Hardware; namespace PeachOutputPortDemo { public class Program { // GR-PEACH //private const Cpu.Pin RedPin = (Cpu.Pin)0x6d; // 赤 //private const Cpu.Pin GreenPin = (Cpu.Pin)0x6e; // 緑 //private const Cpu.Pin BluePin = (Cpu.Pin)0x6f; // 青 private const Cpu.Pin UserPin = (Cpu.Pin)0x6c; // ユーザーLED // GR-SAKURA //private const Cpu.Pin UserPin = (Cpu.Pin)0x56; // LED4 public static void Main() { var led = new OutputPort(UserPin, false); (new Thread(() => { while (true) { led.Write(false); Thread.Sleep(1000); led.Write(true); Thread.Sleep(1000); } })).Start(); } } }
「NETMF : OutputPortの使い方とGR-PEACH / GR-SAKURAでの LED 点灯のコード例」への4件のフィードバック