1.サウンドセンサの取り付け
ロボットはこれまでのロボットを引き継ぎます。今回はサウンドセンサを一つ使用します。
ここでは、ロボット組立て図のp.24〜25に記載されているものを用います。

今回は超音波センサを入力ポート4に接続します。
ここでは、ロボット組立て図のp.24〜25に記載されているものを用います。


今回は超音波センサを入力ポート4に接続します。
2.音に反応して止まるロボット
ここではサウンドセンサを用いて、音に反応して止まるロボットを作ります。
次のプログラムを作成してください。ここでは、sound.cとします。
このプログラムで新しく用いたAPIについて解説します。
サウンドセンサは測定最大値に対する測定値の割合を0〜100の範囲で返します。
このプログラムはサウンドセンサからの値が70%を超えるまで前進し、70%以上になったときに停止します。
DB単位を用いているため、測定可能な音全てが対象となります。 従って、走行中のモータの駆動音も対象となり、比較的大きめに設定しなければなりません。
ただし、モータの駆動音はDBA(調整デシベル)を用いているときでも測定されます。
次のプログラムを作成してください。ここでは、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(デシベル)単位で行われます。DB単位以外では、DBA(調整デシベル)単位もあります。
DBA単位で測定したい場合は、第2引数をDBAと記述してください。
DB | … | センサが測定できる音域全ての音の音圧を測定します。 |
DBA | … | 人間が聞こえる音域の音のみの音圧を測定します。また低音は音圧が低く測定されます。 |
サウンドセンサは測定最大値に対する測定値の割合を0〜100の範囲で返します。
このプログラムはサウンドセンサからの値が70%を超えるまで前進し、70%以上になったときに停止します。
DB単位を用いているため、測定可能な音全てが対象となります。 従って、走行中のモータの駆動音も対象となり、比較的大きめに設定しなければなりません。
ただし、モータの駆動音はDBA(調整デシベル)を用いているときでも測定されます。
3.課題
サウンドセンサを用いて各自面白そうな行動をさせなさい。