5.光センサーの使用
TOP
7.LCDの使用

6.ローテーションセンサーの使用

MINDSTORMSには多くのセンサーがあります。基本セットに標準で入っているタッチセンサーや赤外線センサーのほかにも、追加パーツとしてローテーションセンサーや温度センサーがあります。そのうちローテーションセンサーはほかの付属しているセンサーと同様にbrickOSでAPIが用意されています。ここではローテーションセンサーについて触れていきます。

1.センサーの取り付け

ロボットはローテーションセンサーを用いたものならば何でもかまいません。

2.センサーの使い方

 ローテーションサーの使用について理解できるようなプログラムを作成しましょう。
次のプログラムを作成してください。ここでは作成ファイル名をrotation.cとします。
作成したプログラムrotation.c
#include <dsensor.h> // rotation sensor func is included
#include <conio.h>

int main(int argc, char *argv[]) {
	ds_active(&SENSOR_2);
	ds_rotation_on(&SENSOR_2); // rotation sensor on
	ds_rotation_set(&SENSOR_2,0); // rotation sensor Initialization
	while(1) {
		if(SENSOR_1<0xf000)
			ds_rotation_set(&SENSOR_2,0); // rotation sensor Initialization
	    lcd_int(ROTATION_2);
	msleep(50);
	}
	ds_rotation_off(&SENSOR_2); // rotation sensor off
	return(0);
}
 それではプログラムを実行し、ローテーションセンサーにつながっているシャフトを回してみてください。LCDに表示されている値がzeroから変化するはずです。また、回転方向により値が正・負に変化します。これにより回転方向も検出できるのです。ではタッチセンサーを押してみてください。カウントがzeroに戻るはずです。ローテーションセンサーのカウント値は(dsensor.h内で)int型で宣言されていますのである程度の大きさまではカウント可能です。また、シャフトが1回転につき16回カウントされるようになっています。試しに、シャフトを1回転させてみてください。カウントが16だけ変化するはずです。  プログラムを見てもらいましょう。『ds_active()』によってセンサーをアクティブモードに変更します。ローテーションセンサーはアクティブモードで使用するので必ずこの文を入れておく必要があります。次の『ds_rotation_on()』は文字通り、ローテーションセンサーが接続されているポートのポインタを引数としてセンサーをONにします。また、OFFも同様です。次に『ds_rotation_set(&SENSOR_2,0)』ですが、これは第1引数にセンサーポートのポインタを、第2引数に初期化するカウントの値を指定します。この命令によってローテーションセンサーのカウント値が指定した値に初期化されます。ここではタッチセンサーの反応によりzeroに初期化しています。  また、標準のカーネルではコメントアウトされていますが、bootフォルダ内config.h中の『#define CONF_DSENSOR_VELOCITY』を有効にすることにより、速度も計ることができるようです。(実際に試してはいませんが)

3.課題

ローテーションセンサをタイヤに取り付けて、50cmの正方形を描いて走行をするプログラムを作成せよ。

4.まとめ

 この章ではローテーションセンサーの使い方について学習しました。ローテーションセンサーはモーターと組み合わせて、制御には欠かせないものです。これで、また作り出すロボットの幅が広がったといえるでしょう。ここで紹介してたほかにも温度センサーがありますが、いまのところbrickOSでAPIは用意されていないようです。
5.光センサーの使用
TOP
7.LCDの使用