|
|
第289話 NXCでモーターの回転数を知る前回は,NXCの変数の型の豊富さについて説明した。NXCではNQCに比べ,変数だけでなく,関数も豊富になっている。特にMindStorms NXTでは従来のRCXと違い,モーターがエンコーダ付きのサーボーモーターになっているのでモーター関係の関数が充実している。 今回はモーター関係の関数を少し紹介したい。 基本中のキホンは,OnFwd関数とOff関数だ。OnFwd関数は,OnFwd(OUT_BC,75)のように第一引数にモーターのポートを指定し,第二引数にはパワーを指定する。 Off関数はOff(OUT_BC)のように,指定したモーターを止める。詳しくいうと,Off関数はブレーキをかけるように,モーターの回転を止める。 -------------------------------------------------------------- OnFwd(OUT_BC,75); Wait(3000); Off(OUT_BC); -------------------------------------------------------------- 上記のようにWait関数を間にはさむと,指定した時間,モーターBとCが回る。時間の単位はミリ秒なので,3000で3秒だ。 モーターの止め方にはもう一種類ある。回転を止めるのではなく,電源の供給をやめる方法だ。NXCの場合,Coast関数とFloat関数がそれに当たる。Coast(OUT_BC)のようにすると,モーターは緩やかに止まる。 次に,現在のモーターの状況を知る関数を説明しよう。MotorPower関数は指定したモーターのパワーを返す。
-------------------------------------------------------------- OnFwd(OUT_BC,75); iNum = MotorPower(OUT_B); NumOut(0,LCD_LINE1,iNum); -------------------------------------------------------------- 上記のプログラムはモーターBCをパワー75で回転させた直後,MotorPower関数でモーターのパワーを取得し,LCD(液晶ディスプレイ)に表示する。当たり前だが,表示結果は75だ。MotorPower関数ではモーターに設定した値が返ってくるようだ。 MotorActualSpeed関数はモーターの実際のスピードを取得する。 -------------------------------------------------------------- OnFwd(OUT_BC,75); iNum = MotorActualSpeed(OUT_B); NumOut(0,LCD_LINE2,iNum); -------------------------------------------------------------- このように,モーターをパワー75で回転させた直後,MotorActualSpeed関数で実際のスピードを測ると,返ってくる値は0だ。 続いて,プログラムを以下のように変更する。 -------------------------------------------------------------- OnFwd(OUT_BC,75); Wait(3000); iNum = MotorActualSpeed(OUT_B); NumOut(0,LCD_LINE2,iNum); -------------------------------------------------------------- 3秒間走らせたあとで,MotorActualSpeed関数を実行すると,75という値が返ってきた。MotorActualSpeed関数を使うと実際のパワーが計測できるようだ。 |
|