[[2005/A2]] **あーむ [#da71c8aa] task main(){ task main(){ SetPower(OUT_C,4); OnRev(OUT_C);Wait(5);Off(OUT_C); //C is neck OnRev(OUT_A);Wait(20);Off(OUT_A); //A is finger while(true){ ClearMessage(); until(Message() != 0); if(Message() == 1){ //at box PlaySound(SOUND_UP);Wait(50); OnFwd(OUT_A); //A_catch Wait(100); OnFwd(OUT_C); //C_up Wait(100); PlaySound(SOUND_CLICK) ;Wait(10); SendMessage(1); Wait(100); } if(Message() == 2){ //at goal PlaySound(SOUND_UP) ;Wait(50); OnRev(OUT_C); //C_down Wait(100);Off(OUT_C); OnRev(OUT_A); //A_release Wait(100);Off(OUT_A); OnFwd(OUT_C); //C_up Wait(100);Off(OUT_C); PlaySound(SOUND_CLICK) ;Wait(10); SendMessage(2); Wait(100); } } } } **トレースだけ [#w394f77a] #define ikiti 44 task main(){ #define ikiti 44 task main(){ SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); Wait(50); SendMessage(1);Wait(100); ClearMessage(); until (Message() != 0); //do catch! if ( Message() == 1 ){ //gj! OnRev(OUT_A);OnFwd(OUT_C); until(SENSOR_1 < ikiti); OnFwd(OUT_A); until(SENSOR_2 < ikiti); until(SENSOR_2 > ikiti+5); until(SENSOR_1 < ikiti); while(SENSOR_1 > ikiti || SENSOR_2 > ikiti){ //trace start OnFwd(OUT_C);Off(OUT_A); until(SENSOR_2 < ikiti); Off(OUT_C);OnFwd(OUT_A); until(SENSOR_1 < ikiti); } PlaySound(SOUND_CLICK);Wait(50); **火曜どうでしょう [#zd1f14f3] #define ikiti 44 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT);//SENSOR1 set SetSensor(SENSOR_2,SENSOR_LIGHT);//SENSOR2 set SetSensor(SENSOR_3,SENSOR_LIGHT);//SENSOR3 set Wait(50); // ClearMessage(); // SendMessage(1);Wait(100); // ClearMessage(); // until (Message() != 0); // if (Message() == 1){ // OnFwd(OUT_C);OnRev(OUT_A);Wait(95); // Off(OUT_A+OUT_C); // ClearMessage(); // PlaySound(SOUND_CLICK);Wait(50); // } // // repeat(2){ // if(SENSOR_2>45){ // OnFwd(OUT_A+OUT_C); // } // if(SENSOR_2<45){ // Off(OUT_A+OUT_C) // Off(OUT_A+OUT_C); SendMessage(1);Wait(100); ClearMessage(); until (Message() != 0); //do catch! if ( Message() == 1 ){ //gj! OnRev(OUT_A+OUT_C);Wait(20); OnRev(OUT_A);OnFwd(OUT_C); until(SENSOR_1 < ikiti); OnFwd(OUT_A); until(SENSOR_2 < ikiti); until(SENSOR_2 > ikiti+5); until(SENSOR_1 < ikiti); } Off(OUT_A+OUT_C);Wait(100); OnFwd(OUT_C);OnRev(OUT_A);Wait(18); Off(OUT_A+OUT_C); while(SENSOR_1>45||SENSOR_2>45) { if(SENSOR_1< 43){ Off(OUT_A+OUT_C); OnFwd(OUT_C); until(SENSOR_2<45); } if(SENSOR_2< 43){ Off(OUT_A+OUT_C); OnFwd(OUT_A); until(SENSOR_1<45); } if((SENSOR_1>43) && (SENSOR_2>43)){ //SENSOR(1&2) Line in OnFwd(OUT_A+OUT_C); //Go a head } } //kagohe// if(SENSOR_3>50){ Off(OUT_A+OUT_C);Wait(100); OnFwd(OUT_A+OUT_C);Wait(225); OnFwd(OUT_A);OnRev(OUT_C);Wait(95); Off(OUT_A+OUT_C); ClearMessage(); SendMessage(2); until(Message()==2); if(Message()==2){ OnFwd(OUT_A);OnRev(OUT_C);Wait(120); OnFwd(OUT_A+OUT_C);Wait(250); } } if(SENSOR_3<40){ Off(OUT_A+OUT_C);Wait(100); OnFwd(OUT_A+OUT_C);Wait(400); OnFwd(OUT_A);OnRev(OUT_C);Wait(95); Off(OUT_A+OUT_C); ClearMessage(); SendMessage(2); until(Message()==2); if(Message()==2){ OnFwd(OUT_A);OnRev(OUT_C);Wait(120); OnFwd(OUT_A+OUT_C);Wait(375); } } else{ Off(OUT_A+OUT_C);Wait(100); OnFwd(OUT_A+OUT_C);Wait(75); OnFwd(OUT_A);OnRev(OUT_C);Wait(95); Off(OUT_A+OUT_C); ClearMessage(); SendMessage(2); until(Message()==2); if(Message()==2){ OnFwd(OUT_A);OnRev(OUT_C);Wait(120); OnFwd(OUT_A+OUT_C);Wait(100); } } //modottekitaze// while(SENSOR_1>45||SENSOR_2>45) { if(SENSOR_1< 43){ Off(OUT_A+OUT_C); OnFwd(OUT_C); until(SENSOR_2<45); } if(SENSOR_2< 43){ Off(OUT_A+OUT_C); OnFwd(OUT_A); until(SENSOR_1<45); } if((SENSOR_1>43) && (SENSOR_2>43)){ //SENSOR(1&2) Line in OnFwd(OUT_A+OUT_C); //Go a head } } Off(OUT_A+OUT_C);Wait(100); } **プログラムについて [#e0fbf862] 「ロボが動かせる段階」になるまで時間がかかったため、 ロボの性能を活かしきるプログラムは書ききれなかった。 一番下のプログラムがコンテスト当日に書いた「ドライブベース用」 一番上のプログラムが完成している「アーム用」 ロボのサイズを「一応」考えたライントレースのプログラム。 →怪しい動きだった。 とりあえず箱1個を識別し戻ってくるまでは書けたと思っていたが...... 1回目 苦労したライントレースする線に乗るプログラムが機能せず、 障害物の缶の上に箱を置こうとする。 2回目 箱1個をカゴに入れることに成功! その後、予定では箱を回収しに戻るはずが、腕を広げ「勝ち名乗り?」をあげ回転 すいません、プログラムにオチを書いたつもりはないです。ハイ。