このページは課題3の「ロボット」と「プログラム」紹介のページです。
ここでは制作したロボットの写真と各部の説明を行っています。
1,側面
2,前面
光センサーを2個使ったロボットを制作した。
/*Serch Light program*/ #define TURN_T 430 //ロボットが回転して光を探す時間4.3秒 void move(int i){ /*ロボットの動きを変数(i)で定義*/ switch(i){ case 0: //move(1)の時、停止 Off(OUT_A+ OUT_C);break; case 1: //move(2)の時、前進 OnFwd(OUT_A+ OUT_C);break; case 3: //move(3)の時、右回転 OnFwd(OUT_A); OnRev(OUT_C);break; case 4: //move(4)の時、左回転 OnFwd(OUT_C); OnRev(OUT_A);break; } } void play_music(int light_p){ /*光の強度に合わせて音を鳴らす*/ PlayTone(light_p,2); Wait(2); } task main(){ /*メインプログラム*/ SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーとして定義 SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーとして定義 int light_max = 0; //回転中の光強度の最大値を入れる変数 int time_max = 0; //回転中の光強度が最大値だった時間を入れる変数 ClearTimer(0); //タイマーの初期化 move(3); //4.3秒間右回転して、最も明るい位置を探す while(FastTimer(0) < TURN_T){ play_music((SENSOR_1-24)*100); //光強度に比例した音を鳴らす if(SENSOR_1 > light_max){ //光強度が最大だったときの時間をtime_maxに代入 light_max = SENSOR_1; time_max = FastTimer(0); } } move(0); //止まる move(4); //左回りで光強度が最大だった位置にもどる Wait(TURN_T - time_max); while(true){ //光を追うプログラム開始 move(1); //0.5秒直進する Wait(50); if(SENSOR_1+3 < SENSOR_3){ //もし、右側のセンサーが明るければ、左右のセンサーが同じ明るさになるまで右回転 move(3); until(SENSOR_1 > SENSOR_3); } if(SENSOR_3+3 < SENSOR_1){ //もし、左側のセンサーが明るければ、左右のセンサーが同じ明るさになるまで左回転 move(4); until(SENSOR_1 < SENSOR_3); } } }