NXTプログラミング の検索結果:

NXTプログラミング(10)

今回でNXTプログラミングの最終回の予定である。 マルチスレッドに慣れていない人向けのアドバイス。 SendMessage/LSRead/LSWriteなど、通信はすべてblockingされうる。Bluetooth経由で秒間30回の往復のやりとりが出来るということは、片道1/60秒程度ではあるのだが、I2C接続の超音波センサーのようにレスポンスに時間のかかるデバイスもあるし、通信障害が起こったりするとそこでもblockingされる。 ゆめゆめGUIスレッドで通信を行なわないこ…

NXTプログラミング(9)

超音波センサーの値の取得は難しい。超音波センサーがI2Cで接続されているデジタルセンサーだからである。グレーブックでもこの部分の解説がはしょられている。(→id:yaneurao:20080113) で、こういうFAQ的な質問は必ず誰かがどこかでしているわけで、以下のスレにそのものずばりの回答がある。 http://forums.nxtasy.org/lofiversion/index.php?t473.html 以下、C#で書きなおした。 nc1.SetInputMode(…

NXTプログラミング(8)

今回は、各センサーの値の取得。 まず、アナログセンサーに関しては、以下のようにすれば、そのセンサーの値が入力できる。 // ポート1に接続されている場合 NxtGetInputValues r = nc.GetInputValues(NxtSensorPort.Port1);あとは、この戻り値の r.RawADで生のデータがとれる。(キャリブレーションしたデータもとれるが、RawADで十分だろう。) 事前にセンサーのタイプを設定しておいたほうが、適切な値が返ってくるが、別に設…

NXTプログラミング(7)

■ モーターの同期制御 次にモーターの同期制御のテスト。同期制御は、2つの出力ポートに対して、NxtMotorRegulationMode.MotorSynchronizationを指定してモーターを動かすと実行される。2つ目のSetOutputStateをNXTが受信するまで1つ目のモーターも回らない。 試しにB,Cのモーターを同期的に回してみる。 nc.SetOutputState( NxtMotorPort.PortB, // 出力ポート (sbyte)power, /…

NXTプログラミング(6)

■ tachoLimitを指定する実験 tachoLimit(回転させたい角度)に100を指定してモーターを回した場合、100ほど回ったあとに止まりはじめるので、200ぐらい回る。そのあと再度モーターをtachoLimitに100を指定して回すとtachoCountはすでに本来回すべき位置(100+100 = 200)に達しているためモーターがうんともすんとも言わない。 「tachoCountの目標値」を内部的に管理しているのだと思うが、これを取得したりリセットしたりする手段…

NXTプログラミング(5)

モーターを出来る限り正確に制御したいので詳しくテストしていく。 まず、モーターの状態は、COMポートをopenしたあと、NxtCommunicator.GetOutputStateで取得できる。 try { NxtGetOutputState s = nc.GetOutputState(NxtMotorPort.PortB); label5.Text = string.Format(&quotPower:{0} RotationCount:{1} Tacho:{2}/{3} …

NXTプログラミング(4)

次にモーターの制御である。こいつが思ったより難しい。 NxtCommunicatorのメソッドであるSetOutputStateを用いれば nc.SetOutputState( NxtMotorPort.PortA, // 出力ポート (sbyte)power, // 出力パワー(0〜100) NxtMotorMode.MotorOn | NxtMotorMode.Brake, NxtMotorRegulationMode.Idle, 0, NxtMotorRunState.…

NXTプログラミング(3)

NxtCommunicator.cs*1を用いて開発していくことにする。 まずは、Helloを再生から。 NxtCommunicator nc = = new NxtCommunicator("COM3"); // portは自分の環境に合わせて変更すべし。 nc.Connect(); nc.PlaySoundFile("hello.rso");っと、これで再生されれば良いのだが、NxtCommunicatorにはPlaySoundFileというメソッドが用意されていない。何…

NXTプログラミング(2)

プログラムは簡単だ。Bluetoothの接続設定を行なえば(手順→NXTをBluetooth経由で接続する方法)あとは、仮想的にCOMポートとみなせるから、そのCOMポートをopenしてコマンドをsendで送ってやるだけである。終了するときはcloseを忘れずに。 コマンド表は、以下のURLのBluetooth Developer Kit (BDK) というのがそれである。 http://mindstorms.lego.com/Overview/NXTreme.aspx C#…

NXTプログラミング(1)

NXT基本セットには、マウスだけでプログラミングして、それをNXT本体にUSB/Bluetoothで接続して転送するためのソフトが付属している。これは「NXTソフトウェア」と呼ばれる。(右図) これを使ってライントレーサー(白い紙の上に書かれた黒い線を辿って移動するロボット)のプログラムぐらいならすぐに作れるが、複雑なことをしようと思うと入力された値を変数に格納しておいて、それを加工して、その値によって分岐したいというようなことがある。 こういうことをしようと思うとテキストベ…