[[2009b]] #contents 作成中です *課題3 [#vc5171e0] ~ 懐中電灯に向かってブロックを投げるロボットを作ろう! *チーム [#jcf2f834] チーム名「自由気ままにB級人生(仮) 」~ A: B: C: *ロボット [#k8d080ba] before &ref(./GetAttachmentb.jpg,サイズ,画像の説明); &ref(./GetAttachmenta.jpg,サイズ,画像の説明); &ref(./c.jpg,サイズ,画像の説明); *連射をさせるために [#i19c29b4] 連射をさせるという決まりだったので、弾を撃ったあとリロードさせる必要がありました。撃ったあと、弾が落ちてきて装填される、マガジン方式は他のチームがやっていたので、僕たちはリボルバー方式でつくることにしました。 弾を撃つと、弾を乗せた板が回転し、装填されます。 after &ref(./d.jpg,サイズ,画像の説明); *プログラム [#hb34a8d7] *A改めシンゴのプログラム [#p76bd8b2]〜 [#b863026f] #define THRESHOLD 35 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); while( (SENSOR_1 < THRESHOLD)||(SENSOR_3 < THRESHOLD) ) { OnFwd(OUT_B); Off(OUT_A); } repeat(3) { OnRev(OUT_A); Wait(30); OnFwd(OUT_A); Wait(30); } Off(OUT_A); OnFwd(OUT_B);Wait;(20); Off(OUT_B); OnFwd(OUT_C);Wait(20); Off(OUT_C); } *B改めまさやのプログラム [#v239ebf9] 「7秒以上追尾できたら懐中電灯に向かってブロックを投げる。」を担当 #define hit OnFwd(OUT_A);Wait(38);Off(OUT_A); //ブロックを打つ動作 #define revolver OnFwd(OUT_C);Wait(184);Off(OUT_C);//リボルバーを90度回す #define turn_r OnFwd(OUT_B); //右折 #define turn_l OnRev(OUT_B); //左折 #define shine 60 //光の明るさ #define run_time 700 //光を追う時間 #define keep Off(OUT_B); //停止 task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); //光センサー1を決める SetSensor(SENSOR_3, SENSOR_LIGHT); //光センサー3を決める while(true){ if((SENSOR_1 < shine)&&(SENSOR_3 < shine)){ //両方の光センサーが暗いとき turn_l; //左に回って光を探す until((SENSOR_1 > shine)||(SENSOR_3 > shine)); //どちらかの光センサーが光を見つけるまで keep;Wait(10); //見つけたら停止 } ClearTimer(0); //タイマーをクリア while(((SENSOR_1 > shine)||(SENSOR_3 >shine))&&(FastTimer(0) < 700)){ if((SENSOR_1 > shine)&&(SENSOR_3 < shine)){ //左側に光がある時 turn_l; //左に曲がって光を追う until((SENSOR_1 > shine)&&(SENSOR_3 > shine));//正面に光が来るまで keep;Wait(10); //正面に来たら停止 } if((SENSOR_1 < shine)&&(SENSOR_3 > shine)){ //右側に光がある時 turn_r; //右に曲がって光を追う until((SENSOR_1 > shine)&&(SENSOR_3 > shine));//正面に光が来るまで keep;Wait(10); //正面に来たら停止 } if((SENSOR_1 > shine)&&(SENSOR_3 > shine)){ //正面に光がある時 keep; //停止 } } PlaySound(SOUND_UP); //7秒光を追えたら音を鳴らす revolver;Wait(10); //リボルバーを回転 hit;Wait(10); //ブロックを打つ keep; //停止 } } なぜか懐中電灯の光を無視してしまうことがあり、7秒間光を追わせることが難しかったです。 *C改めゆあのプログラム [#w08103cd] #define left(t) OnFwd(OUT_B); Wait(t); #define right(t) OnRev(OUT_B); Wait(t); #define offb Off(OUT_B); #define revolver(t) OnFwd(OUT_C); Wait(t); #define hit(t) OnFwd(OUT_A); Wait(t); task main(){ int hikari_1=60; //hikari_1に60を入れる int hikari_2=65; //hikari_2に65を入れる SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); while((SENSOR_1 <hikari_1)&&(SENSOR_3 <hikari_1)){ /*光が両方のセンサーに入るまで回りつづける*/ left(30); } offb; while((SENSOR_1 <hikari_2)&&(SENSOR_3 <hikari_2)){ right(60); offb; left(70); } /*光が強くなるまで近づく*/ offb;//止まる revolver(175); //リボルバーを回す Off(OUT_C); //止める hit(37); //弾を打つ Off(OUT_A); } 光センサーの精度が高くないので、近づきすぎてしまったりと、調整が難しかったです *コメントのコーナー [#nd5b8867] コメントをどうぞ。 #comment