net micro frameworkキックオフミーティング
TRANSCRIPT
.NET Micro Framework をさわってみて.NET Micro Framework キックオフミーティング
2
Myself
森理 麟 (@moririring)職業:ゲームプログラマHP : moririringのHP自称ハッカソンエバンジェリストMicrosoft MVP for C#
3
MyCommunity
VSハッカソン倶楽部EffectiveC++読書会(終了)ExcptionalC++読書会社内勉強会勉強会UnityクリエイターズVisual Studio勉強会IT英語勉強会
4
A Start
林田さんから基盤を用意するので、 .NET Micro Framework を使った勉強会をしませんか?とお誘いを受けました。実は最初、森理は組み込みには興味がなくてそれほど乗り気ではありませんでした。
5
Goal
実際に資料をみせてもらい VS上に基盤が乗っているのを見て、突如興味がわきました。そして Creberus をお借り出来たので、さわってみました。基盤をさわったのも初めてです。で、感想としては…
6
.NET Micro Frameworkをさわった感想
超簡単!
7
Goal
今日の内容の殆どは土井研のページに書いてあります。内容は殆どこのページに書いてあることを実践しただけです。 30 分かからないぐらいで、実現出来ると思います。
8
事前準備
Visual Studio で Creberusを扱う際は事前準備として以下の2つをインストールしておく
9
事前準備
.NET Micro Framework SDK 4.3 (RTM)←2012 にも対応!インストールすると「新規作成」→「プロジェクト」にMicro Framwork が追加される。実行するとエミュレータが起動するけれど、使い方はノーチェック。
10
Goal
GHI Software Package v4.2今回の基盤 Creberus 用のSDKダウンロードにはユーザー登録が必要インストールすると「新規作成」→「プロジェクト」にGadgeteer が追加される。
11
Goal
Creberus のプロジェクトを起動すると、ソリューションエクスプローラーにProgram.gadateer というビューが足されます。実際見てみましょう!
12
Goal
このビューが何と基盤!さらにツールボックスで関連ボードを追加可能!!配線のつながりはドラッグアンドドロップ!!!基盤に書かれた名前がそのまま変数名!!!!
13
Goal
実際のプログラムProgramStarted メソッドで開始。Debug.Print(“Hello,world!");
14
Goal
プログラムで言う「 Hello,world 」は、基盤界のでは LED を光らすことです。光らすメソッドは「 Mainboard.SetDebugLED(true); 」
15
void ProgramStarted()
{
while (true)
{
Mainboard.SetDebugLED(true);
Thread.Sleep(500);
Mainboard.SetDebugLED(false);
Thread.Sleep(500);
}
}
16
Goal
次に拡張基盤の LED を光らせます。ドラッグアンドドロップでつなぐことができます!
17
void ProgramStarted()
{
while (true)
{
for (var i = 1; i <= 6; i++)
{
led7r.TurnLightOn(i);
Thread.Sleep(100);
led7r.TurnLightOff(i);
}
}
}
18
Goal
今度はジョイスティックの値をとってみます。
19
void ProgramStarted()
{
var myPosition = new Joystick.Position();
while (true)
{
myPosition = joystick.GetJoystickPosition();
Debug.Print("x=" + myPosition.X + "y=" + myPosition.Y);
Thread.Sleep(1000);
}
}
20
Goal
ジョイスティックが押されたかはイベントが使えます。
21
int _n;
void ProgramStarted()
{
joystick.JoystickPressed += joystick_JoystickPressed;
joystick.JoystickReleased += joystick_JoystickReleased;
}
void joystick_JoystickPressed(Joystick sender, Joystick.JoystickState state)
{
_n++;
Debug.Print("press " + _n);
}
void joystick_JoystickReleased(Joystick sender, Joystick.JoystickState state)
{
Debug.Print("release");
}
22
Goal
また次のようにタイマー処理も可能です。
23
void ProgramStarted()
{
var timer = new GT.Timer(1000);
timer.Tick += timer_Tick;
timer.Start();
}
void timer_Tick(GT.Timer timer)
{
Debug.Print("tick");
}
24
Goal
今後は温度と湿度を取ってみます。
25
void ProgramStarted()
{
temperatureHumidity.MeasurementComplete += temperatureHumidity_MeasurementComplete;
temperatureHumidity.StartContinuousMeasurements();
}
void temperatureHumidity_MeasurementComplete(TemperatureHumidity sender, double temperature, double relativeHumidity)
{
Debug.Print("Temperature: " + temperature + " Relative Humidity: " + relativeHumidity);
}
26
Goal
最後に LAN を使って http アクセスを試してみます。これは流石に数行とは行きません。でも、これで WEB を使った表現も可能なことは分かったと思います。可能性は∞!
27
Goal
データの書き込みに組み込み系でよく使われる WEB サイトn xivelyがありますPachube から Cosm になって最近 xively になったそうです。使ってみると確かに手軽です。
28
Thank you for hearing
ご清聴ありがとうございました