version 01
Last modified: Thu Dec 26 13:44:18 JST 2002
[必須] ロボットに鉛筆またはペンを取り付け、 A3 用紙の上に ★型を描かせなさい (練習問題 3.3)。
#define MOVE_TIME 200 task main() { OnFwd(OUT_A+OUT_C); // AとCのモータを正回転 Wait(200); // 2秒間前進 repeat(4){ OnFwd(OUT_A); OnRev(OUT_C); Wait(MOVE_TIME); // 方向転換 OnFwd(OUT_A+OUT_C); Wait(200); // 2秒間前進 } Float(OUT_A+OUT_C); // Off より滑らかに止まる }工夫した点:星型のズレを減らすために、ペンを中央付近に取り付けた。
[必須] 机の上で動き回るロボットを作成しなさい。 ただし方向変換は机の端に来たときに行うこと (練習問題 4.2)。
task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); // センサー端子1に接続されたセンサーが // タッチセンサーであると宣言 while (true) { OnFwd(OUT_A+OUT_C) ; // 前進 if (SENSOR_1 == 0 ) //タッチセンサーが押されたら、 { OnRev(OUT_A+OUT_C) ; Wait(50); // 0.5 秒間バックする OnFwd(OUT_A) ; Wait(150); // 1.5 秒間方向転換する } } }工夫した点:タッチセンサーの位置を、前方に少し距離をおいて付けることで、机から落ちにくくした。
[必須] 前向きに光センサーを取り付けたロボットを作成し、 そのロボットがもっとも明るい方向 (例えば照らした懐中電灯の方向) を向くようにしなさい。 さらにそのロボットが、 懐中電灯の光を追いかけて進むようにプログラムを改良しなさい (練習問題 4.5.1, 4.5.2)
#define RUN_TIME 50 // トレースする時間(単位 1/10 秒) int lightmax; int timemax; task main () { SetSensor(SENSOR_1, SENSOR_LIGHT); while (true) { lightmax = 0; timemax = 0; ClearTimer(0); // Timer(0) をリセット while ( Timer(0) <= RUN_TIME ) { OnFwd(OUT_A); OnRev(OUT_C); if (SENSOR_1 >= lightmax) { lightmax = SENSOR_1 ; ClearTimer(1); // Timer(1) をリセット } } timemax = Timer(1); ClearTimer(0); // Timer(0) をリセット OnRev( OUT_A ); OnFwd( OUT_C ); until( Timer(0) >= timemax ); OnFwd(OUT_A + OUT_C); Wait(50); } }工夫した点:
[必須] 明るいところでは、長調で、暗いところでは短調で、
曲を演奏するプログラムを作成しなさい (曲は何でもよい) (練習問題 5.2)。
工夫した点:
[自由課題] 黒い線に沿って速く走るロボットを作成せよ
(例題の改良)。
工夫した点: