- 追加された行はこの色です。
- 削除された行はこの色です。
(準備中)
#navi(NQC入門)
#nomenubar
ここではRISの別売部品として入手できる回転センサ(角度センサ)の使い方や使用例を紹介します。
回転センサを使えば軸の回転角度や回転数を計ることができ、例えば決まった角度だけアームを動かしたり、距離の測定なども可能になります。
このセンサの値は整数値で、1/16回転ごと(22.5度ごと)に1づつ増え、逆回転の場合にはマイナスの値になります。
例えば、軸が90度回転した時のセンサの値は4、軸が1回転(360度)した時はセンサの値は16、また逆方向に2回転した時はマイナス32となります。
センサの値をリセット(0に戻す)には ClearSensor というコマンドを実行します。
以下の例は軸が1回転する度にピッという音を鳴らすプログラム例です。
task main ()
{
SetSensor(SENSOR_1,SENSOR_ROTATION);
SetSensor(SENSOR_1,SENSOR_ROTATION); // SENSOR_1 は回転センサ
while (true){
ClearSensor(SENSOR_1);
until (SENSOR_1 > 16);
PlaySound(0);
ClearSensor(SENSOR_1); // 回転センサをリセット
until (SENSOR_1 > 16); // 回転センサの値が16になるまで待つ
PlaySound(0); // ピッという音を鳴らす
}
}
他の方法としては、割算の余りを求める「%」という演算子を使っても
上と同じことができます。
task main ()
{
SetSensor(SENSOR_1,SENSOR_ROTATION);
ClearSensor(SENSOR_1);
ClearSensor(SENSOR_1); // この命令の位置に注意
while (true){
if (SENSOR_1 % 16 == 0) {
PlaySound(0); Wait(5);
if (SENSOR_1 % 16 == 0) { // センサの値が 16 で割り切れる場合
PlaySound(0); Wait(10); // この場合には少し待ち時間が必要
}
}
}
この例では、逆回転の時、つまりセンサの値がマイナスになる場合でもちゃんと機能します。
また以下の例は絶対値を求める abs という演算子を使って、前または後に3回転する度にピピッと鳴るプログラムです。
task main ()
{
SetSensor(SENSOR_1,SENSOR_ROTATION);
while (true) {
ClearSensor(SENSOR_1);
until ( abs(SENSOR_1/16) >= 3 );
until ( abs(SENSOR_1) >= 3 * 16 );
PlaySound(1); Wait(10);
}
}
★ 練習問題~
上の例を参考に、軸を5度回すごとにピッと鳴るロボットを作成しなさい。~
ヒント: キットには8枚ギヤ、16枚ギヤ、24枚ギヤ、40枚ギヤが含まれています。これらを適当に組み合わせることで測定の精度を上げることができます。
★ 練習問題~
黒い線で描いた周回コースに沿ってロボットを走らせ、そのコースの一周の長さを求めなさい。なるべく精度を上げること。~
ヒント: タイヤが1回転する距離を計る際、なるべく誤差が少なくなる方法を考えてください。
★ 練習問題~
一秒ごとにカチッ、カチッと動く時計の秒針を作成しなさい。
2008年7月1日からのこのページのだいたいの訪問者数:
本日&counter(today);
昨日&counter(yesterday);
合計&counter(all);
#navi(NQC入門)