[[2008b/MemberOnly/進行状況A]] 2008b/A7/課題3右 #hr CENTER:&size(25){光追跡ロボット}; #hr CENTER:製作者:タキさ 目次 #contents ------- *課題についての説明 [#d306895c] *製作したマシン [#e6da836a] *このマシンの利点[#la6ffb39] *モータ・センサに対応する端子 [#d352300d] モータ、センサについては以下の端子に接続してあります。 -出力側 A端子 → 左モータ(正回転:前進,逆回転:後進) B端子 → なし C端子 → 右モータ(正回転:前進,逆回転:後進) -入力側 1端子 → 左光センサ 2端子 → タッチセンサ 3端子 → 右光センサ *プログラムの紹介 [#n9e8de4f] /* 光追跡ロボット */ /* 定数を定義 */#define SHI_J 75 void move_fwd(void){ OnFwd(OUT_A); Wait(27); OnRev(OUT_A); Wait(20); Off(OUT_A); } task main(){ int n, s1, s2; s1 = 0; s2 = 0; SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetPower(OUT_A,5); OnRev(OUT_A); ClearTimer(0); while(FastTimer(0) <= 500){ if(SENSOR_1 > s1)s1 = SENSOR_1; if(SENSOR_3 > s2)s2 = SENSOR_3; } Off(OUT_A); Wait(100); OnRev(OUT_A); s1 = s1 - 2; s2 = s2 - 2; while((SENSOR_1 < s1) || (SENSOR_3 < s2)); while(1){ if((SENSOR_1 > SHI_J) || (SENSOR_3 > SHI_J)){ Off(OUT_A); OnRev(OUT_C); Wait(17); Off(OUT_C); break; } while((SENSOR_1 >= s1) || (SENSOR_3 >= s2))move_fwd(); if(SENSOR_1 < s1 && SENSOR_3 >= s2){ while(SENSOR_1 < s1)OnFwd(OUT_A); } if(SENSOR_1 >= s1 && SENSOR_3 < s2){ while(SENSOR_3 < s2)OnRev(OUT_A); } if(SENSOR_1 < s1 && SENSOR_3 < s2){ while((SENSOR_1 < s1) || (SENSOR_3 < s2))OnRev(OUT_A); } } } *苦労した点 [#u55de425] *製作日誌 [#u1068eb7] *皆さんのコメント [#g72ad519] よろしければコメントをどうぞ #comment