.NET Gadgeteerで温度計 - LCDで表示
.NET Gadgeteerで温度計、第二段です。このポストでは、計測した温度をLCDで表示する方法を紹介します。
このポストを読む前に、一つ前の、https://blogs.msdn.com/b/hirosho/archive/2012/02/06/tipsofdotnetgadgeteerwiththermometersensor.aspx をご一読ください。
一つ前のポストで説明した方法で出来上がった、Fez Spider+UsbClientDP+eBlockExpansion+E-Block Thermometerを接続した状態から始めます。プロジェクトのProgram.gadgeteerを開き、ツールボックスから、Display_T35をドラッグ&ドロップします。そして、Connect All Modulesを実行します。
すると、それまでeBlockExpansionにつながっていた10番コネクタが、Display_T35のTコードに奪われてしまい、別のコネクタにアサインされます。このコネクタは、間違いなので、青線をマウスで選択して一旦削除し、eBlockExpansionの黒いコネクタでマウスクリック&ドラッグして、”A”とマークされているSpiderボードの9番コネクタに接続しなおします。
これで準備完了です。
このポストでは非常に簡単な例ですが、計測した温度をLCD上辺真ん中にテキストで表示する方法を説明します。前のポストで記述したコードの、thermoInのインスタンスを取得する付近に、表示の為の準備コードを記述します。
thermoIn = eBlockExpansion.SetupAnalogInput(GT.Socket.Pin.Four);
display.WPFWindow.Background = new SolidColorBrush(Color.Black);
StackPanel panel = new StackPanel(Orientation.Vertical);
display.WPFWindow.Child = panel;
degreeText = new Text();
degreeText.TextAlignment = TextAlignment.Center;
degreeText.ForeColor = Colors.Blue;
degreeText.Font = Resources.GetFont(Resources.FontResources.NinaB);
panel.Children.Add(degreeText);
太字のコードが、表示用のコードです。displayという名前の変数がGadgeteerで自動的に生成された、T35 LCDのインスタンスです。.NET Micro FrameworkのGUIは、WPFのサブセットなので、WPFをC#コードで作成するのとよく似たコードになります。ここでは、StackPanelを作成して、Text(WPFのTextBlockに相当)型の変数degreeTextをパネルに配置しています。degreeTextは、このクラスのメンバー変数として定義しておきます。
Text degreeText;
displayのWPFWindowプロパティは、WPFで云うところのWindowクラスに相当し、GUI表示のベースとなります。
後は、TimerのTickイベントのハンドラーで、degreeTextの値を更新すれば、LCDでの表示が可能になります。
void timer_Tick(GT.Timer timer)
{
double degree = thermoIn.ReadVoltage();
degree = degree * 78.0 / 3.3 - 22.0;
Debug.Print("Degree : " + degree);
degreeText.TextContent = degree.ToString();
}
degreeTextのTextContentは、WPFのTextBlockのTextプロパティに相当します。TextContentに文字列を代入すれば、LCDにその文字列が表示されます。
もっと素敵なグラフィックスを!!という方は、https://msdn.microsoft.com/ja-jp/netframework/bb267253#device_software から自習書を公開しているので、グラフィックス表示などチャレンジしてみてください。