詳しい説明はこちらをどうぞ→ ロボコンルール:
#define Do 523 #define Re 587 #define Mi 659 #define Fa 698 #define Sol 784 #define Ra 440 #define Shi 494 #define DO 1047 task play_music() // doreminouta 音楽をつける { while (true) { PlayTone(Do,25); Wait(30); PlayTone(Re, 5); Wait(10); PlayTone(Mi,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Mi,10); Wait(15); PlayTone(Do,10); Wait(15); PlayTone(Mi,20); Wait(25); PlayTone(Re,25); Wait(30); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Mi, 5); Wait(10); PlayTone(Re, 5); Wait(10); PlayTone(Fa,40); Wait(45); PlayTone(Mi,25); Wait(30); PlayTone(Fa, 5); Wait(10); PlayTone(Sol,25); Wait(30); PlayTone(Mi, 5); Wait(10); PlayTone(Sol,10); Wait(15); PlayTone(Mi,10); Wait(15); PlayTone(Sol,20); Wait(25); PlayTone(Fa,25); Wait(30); PlayTone(Sol, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Ra,40); Wait(45); PlayTone(Sol,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Re, 5); Wait(10); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Ra,40); Wait(45); PlayTone(Ra,25); Wait(30); PlayTone(Re, 5); Wait(10); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Shi,40); Wait(45); PlayTone(Shi,25); Wait(30); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Shi, 5); Wait(10); PlayTone(DO,40); Wait(45); PlayTone(DO, 5); Wait(10); PlayTone(Shi, 5); Wait(10); PlayTone(Ra,10); Wait(15); PlayTone(Fa,10); Wait(15); PlayTone(Shi,10); Wait(15); PlayTone(Sol,10); Wait(15); PlayTone(DO,40); Wait(45); }} #define go OnRev(OUT_A); //前に進む #define back OnFwd(OUT_A);//後ろに下がる #define hand OnFwd(OUT_B);//アームを開く #define up OnFwd(OUT_C);//アームを持ち上げる task main () { SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3, SENSOR_LIGHT); start play_music ; //音楽を始める while(true){ if(SENSOR_1<=42&&SENSOR_3<=40){ go ; } if(SENSOR_1>=42&&SENSOR_3>=40){ stop play_music; //音楽を止める Off(OUT_A); //モータを止める hand ; Wait(300); //3秒間開く up ; Wait(500); // 5秒間持ち上げる go ; Wait(50); Off(OUT_A); //前に進む OnRev(OUT_B); Wait(300); Off(OUT_B); //置く back ; Wait(300); Off(OUT_A); //後ろに下がる }}}
光センサーの位置が重要! 2つが適当な位置にあるため、例外なく物体を認識することが出来る | |||
4つのギアを用いることにより、アームを上に上げることができる | |||
アームの動作の中心となるギア 小さいギアと大きいギアの2種類を用いることによって、柔らかい動きを作ることができた |
大変だった所
#define Do 1047 //音楽スタート #define Re 1175 #define Mi 1319 #define Fa 1397 #define So 1568 #define Ra 1760 #define Shi 1976 #define Doo 2093 task play_music() { while (true) { PlayTone(Do,20); Wait(30); PlayTone(Re,20); Wait(30); PlayTone(Mi,20); Wait(30); PlayTone(Fa,20); Wait(30); PlayTone(So,20); Wait(30); PlayTone(Ra,20); Wait(30); PlayTone(Shi,20); Wait(60); PlayTone(Doo,20); Wait(120); }} void left(int t) //左に動く { OnRev(OUT_A); OnFwd(OUT_C); Wait(t); Off(OUT_A+OUT_C); } void right(int t) //右に動く { OnFwd(OUT_A); OnRev(OUT_C); Wait(t); Off(OUT_A+OUT_C); } void go(int t) //前に進む { OnFwd(OUT_A+OUT_C); Wait(t); Off(OUT_A+OUT_C); } void back(int t) //後ろに下がる { OnRev(OUT_A+OUT_C); Wait(t); Off(OUT_A+OUT_C); } task main() { start play_music ; //音楽を流す時間の設定 go(350); back(250); left(60); go(250); right(80); go(350); right(135); go(150); back(300); stop play_music; }