1.モータの制御 TOPへ 3.ライトセンサの使用

2.タッチセンサの使用


LEGO MINDSTORMSには様々なセンサが使用できます。そして、これらを用いてロボットの制御を行うことができます。 センサは、タッチセンサ・ライトセンサ・超音波センサ・サウンドセンサ・ロータリーエンコーダが付属しています。 ここでは、タッチセンサについて触れていきます。


1.タッチセンサの取り付け

ロボットは先ほどのものを引き継ぎます。
今回はタッチセンサを1個使ったバンパーを作成します。
例として、ロボット組立て図記載のバンパーを用います(p40〜p43)。ただし、後部ではなく前部にタッチセンサを取り付けて下さい。
touch.jpg(11578 byte)
これを入力ポート1に接続して完成です。


2.タッチセンサが押されるまで前進

まず、簡単なプログラムとしてタッチセンサが押されるまで前進するプログラムを作ります。
次のプログラムを作成してください。ここではファイル名はtouch1.cとしました。
touch1.c
#include "nxtlib.h"

task main(){
	SetSensorTouch(S1);

	motor[motorB] = 100;
	motor[motorC] = 100;

	while(SensorValue(S1) == 0){
		wait1Msec(1);
	}

	motor[motorB] = 0;
	motor[motorC] = 0;
}

注意(外部環境の場合)
このプログラムやこれ以降では nxtlib.h というヘッダが必要です。
沼津高専のD科演習室以外の環境で行う場合には、nxtlib.hをコンパイルするプログラムと同じディレクトリか、 robotc.exeが置かれているディレクトリに保存してください。
 →nxtlib.hをダウンロード (右クリックから「名前をつけて保存」でダウンロードして下さい)

このプログラムの解説をします。

SetSensorTouch(S1)
入力ポート1にタッチセンサを設定します。これにより入力ポート1から得られるデータの型やセンサの動作が決定します。 この関数は、nxtlib.h に記述されています。
入力ポートはS1〜S4で指定します。

SensorValue(S1)
入力ポート1のセンサの値を取得します。この関数はタッチセンサ以外のセンサでも使用できます。

タッチセンサの場合は、センサが押されるとSensorValue()で得られる値が1になります。
ですから、ロボット前部に取り付けられたタッチセンサが押されるとwhile()の条件文が偽となり、 左右のモータのスピードを0に、すなわち停止します。


3.課題

タッチセンサが押されたら障害物をよけるプログラムを作成せよ。



1.モータの制御 TOPへ 3.ライトセンサの使用