5.超音波センサの使用 TOPへ 7.ボタンの使用

6.サウンドセンサの使用


ここでは、もう一つNXTで追加されたサウンドセンサのプログラムについて学習します。 サウンドセンサは音圧(音の強さ)を測定するセンサであり、ロボットに新たなギミックを仕込むことができます。


1.サウンドセンサの取り付け

ロボットはこれまでのロボットを引き継ぎます。今回はサウンドセンサを一つ使用します。
ここでは、ロボット組立て図のp.24〜25に記載されているものを用います。
sound1.jpg(12136 byte) sound2.jpg(33170 byte)
今回は超音波センサを入力ポート4に接続します。


2.音に反応して止まるロボット

ここではサウンドセンサを用いて、音に反応して止まるロボットを作ります。
次のプログラムを作成してください。ここでは、sound.cとします。
sound.c
#include "nxtlib.h"

#define SOUND 70

task main(){
	SetSensorSound(S4,DB);
	motor[motorB] = 100;
	motor[motorC] = 100;
	while(SensorValue(S4) < SOUND){
		wait1Msec(1);
	}

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

}

このプログラムで新しく用いたAPIについて解説します。

SetSensorLight(S4,DB)
入力ポート4にサウンドセンサを設定します。
測定はDB(デシベル)単位で行われます。DB単位以外では、DBA(調整デシベル)単位もあります。
DBA単位で測定したい場合は、第2引数をDBAと記述してください。
DB センサが測定できる音域全ての音の音圧を測定します。
DBA 人間が聞こえる音域の音のみの音圧を測定します。また低音は音圧が低く測定されます。

サウンドセンサは測定最大値に対する測定値の割合を0〜100の範囲で返します。
このプログラムはサウンドセンサからの値が70%を超えるまで前進し、70%以上になったときに停止します。
DB単位を用いているため、測定可能な音全てが対象となります。 従って、走行中のモータの駆動音も対象となり、比較的大きめに設定しなければなりません。
ただし、モータの駆動音はDBA(調整デシベル)を用いているときでも測定されます。


3.課題

サウンドセンサを用いて各自面白そうな行動をさせなさい。



5.超音波センサの使用 TOPへ 7.ボタンの使用