[[2007a/MemberOnly/進行状況A]] #contents *ロボット紹介 [#jc496391] #ref(2007a/A1/課題2左/20070620185239.jpg,100%,ロボット) 今回は、スピードを遅くして、コーナーでのまがりをスムーズにするようなマシンを作りました。全体像はシンプルな印象ですが、タイヤとタイヤを1つのギアで回転させているため、タイヤの回るスピードを減速させることができました。 #ref(2007a/A1/課題2左/20070620185310[1].jpg,100%,ギア) *コース紹介 [#k8a96154] #ref(2007a/A1/課題2左/20070620185349.jpg,100%,コース) ミッキーマウスをイメージしたコースです。耳の部分の交差点が直角の交差点でないため意外と難コースとなっています。 *プログラム [#ce5a2d00] **黒線トレース [#vd38be44] #define THRESHOLD 40 //閾値 #define RUN_TIME 600 //トレースする時間 task main() { //センサーを定義 SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); ClearTimer(0); while( Timer(0) <= RUN_TIME ){ //黒線上ではないとき直線 if(SENSOR_1 >= THRESHOLD && SENSOR_3 >= THRESHOLD){ OnFwd(OUT_A+OUT_C); } //黒線上のとき一旦道を譲り左方向へ移動(線上へ行くため) else if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD){ OnRev(OUT_A+OUT_C); Wait(30); OnFwd(OUT_A+OUT_C); Wait(30); Off(OUT_A+OUT_C); Wait(50) OnFwd(OUT_C); Off(OUT_A); Wait(100); until(SENSOR_3 <= THRESHOLD); } //右側が黒い線に入ると、右に曲がる。 else if(SENSOR_3 < THRESHOLD){ OnFwd(OUT_A); OnRev(OUT_C); Wait(4); } //左側が黒い線に入ると、左に曲がる。 else{ OnFwd(OUT_C); OnRev(OUT_A); Wait(4); } //ぶつかったときにタッチセンサーにより停止 if(SENSOR_2 == 1){ OnRev(OUT_A+OUT_C); Wait(50); Off(OUT_A+OUT_C); Wait(300); } } Off(OUT_A+OUT_C); //END } **ミッキーマウスマーチ [#s27f70e0] #define So 392 #define Ra 440 #define Shi 494 #define Do 523 #define Re 587 #define Mi 659 #define Fa 698 #define Sol 784 task play_music() { while (true) { PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Re,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Shi,25); Wait(30); PlayTone(Ra, 5); Wait(10); PlayTone(So,80); Wait(85); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Do,35); Wait(40); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Do,35); Wait(40); PlayTone(Mi,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Re,25); Wait(30); PlayTone(Shi,5); Wait(10); PlayTone(Do,80); Wait(85); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Re,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Shi,25); Wait(30); PlayTone(Ra, 5); Wait(10); PlayTone(So,80); Wait(85); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Do,35); Wait(40); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Do,35); Wait(40); PlayTone(Mi,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Re,25); Wait(30); PlayTone(Shi,5); Wait(10); PlayTone(Do,30); Wait(40); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Ra,100); Wait(120); PlayTone(Do,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(So,100); Wait(120); PlayTone(So,25); Wait(30); PlayTone(So, 5); Wait(10); PlayTone(Ra,25); Wait(30); PlayTone(Ra,5); Wait(10); PlayTone(Ra,25); Wait(30); PlayTone(Ra,5); Wait(10); PlayTone(Ra,25); Wait(30); PlayTone(Ra,5); Wait(10); PlayTone(Shi,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Re,140); Wait(160); } task main() { SetSensor(SENSOR_1, SENSOR_TOUCH); start play_music ; OnFwd(OUT_A+OUT_B); until (SENSOR_1 == 1; stop play_music ; Off(OUT_A+OUT_B); **マリオ [#i087039c] #define E 330 #define So 392 #define SSo 415 #define Ra 440 #define RRa 466 #define Shi 494 #define Do 523 #define Re 587 #define RRe 622 #define Mi 659 #define Fa 698 #define FFa 740 #define Sol 784 #define r 880 #define C 1047 task play_music() // 音楽を演奏するタスク { while (true) { PlayTone(Mi,10); Wait(15); // Wait の時間の方を少し長くして PlayTone(Mi, 15); Wait(30); // 同じ音を続けて鳴らす場合にも PlayTone(Mi,10); Wait(30); // 一つの音にならないようにしている PlayTone(Do,10); Wait(15); PlayTone(Mi,20); Wait(30); PlayTone(Sol,20); Wait(60); PlayTone(So,20); Wait(60); PlayTone(Do,15); Wait(45); PlayTone(So, 15); Wait(45); PlayTone(E,15); Wait(45); PlayTone(Ra,25); Wait(30); PlayTone(Shi,25); Wait(30); PlayTone(RRa,10); Wait(15); PlayTone(Ra,20); Wait(30); PlayTone(So,15); Wait(20); PlayTone(Mi,15); Wait(20); PlayTone(Sol,15); Wait(20); PlayTone(r, 15); Wait(30); PlayTone(Fa,10); Wait(15); PlayTone(Sol,25);Wait(30); PlayTone(Mi,25); Wait(30); PlayTone(Do, 10); Wait(15); PlayTone(Re,10); Wait(15); PlayTone(Shi,15); Wait(45); PlayTone(Do,15); Wait(45); //繰り返し PlayTone(So, 15); Wait(45); PlayTone(E,15); Wait(45); PlayTone(Ra,25); Wait(30); PlayTone(Shi,25); Wait(30); PlayTone(RRa,10); Wait(15); PlayTone(Ra,20); Wait(30); PlayTone(So,15); Wait(20); PlayTone(Mi,15); Wait(20); PlayTone(Sol,15); Wait(20); PlayTone(r, 15); Wait(30); PlayTone(Fa,10); Wait(15); PlayTone(Sol,25);Wait(30); PlayTone(Mi,25); Wait(30); PlayTone(Do, 10); Wait(15); PlayTone(Re,10); Wait(15); PlayTone(Shi,15); Wait(75); PlayTone(Sol,10); Wait(15); PlayTone(FFa,10); Wait(15); PlayTone(Fa,10); Wait(15); PlayTone(RRe,15); Wait(30); PlayTone(Mi, 15); Wait(30); PlayTone(SSo,10); Wait(15); PlayTone(Ra,10); Wait(15); PlayTone(Do,15); Wait(30); PlayTone(Ra,10); Wait(15); PlayTone(Do,10); Wait(15); PlayTone(Re,10); Wait(45); PlayTone(Sol,15); Wait(15); PlayTone(FFa,15); Wait(15); PlayTone(Fa, 5); Wait(15); PlayTone(RRe,10); Wait(30); PlayTone(Mi,5);Wait(30); PlayTone(C,15); Wait(30); PlayTone(C,8); Wait(15); PlayTone(C,15); Wait(90); PlayTone(Sol,10); Wait(15); PlayTone(FFa,10); Wait(15); PlayTone(Fa,10); Wait(15); PlayTone(RRe,15); Wait(30); PlayTone(Mi, 15); Wait(30); PlayTone(SSo,10); Wait(15); PlayTone(Ra,10); Wait(15); PlayTone(Do,15); Wait(30); PlayTone(Ra,10); Wait(15); PlayTone(Do,10); Wait(15); PlayTone(Re,10); Wait(45); PlayTone(RRe,10); Wait(45); PlayTone(Re,10); Wait(45); PlayTone(Do,20); Wait(120); PlayTone(Sol,10); Wait(15); //繰り返し PlayTone(FFa,10); Wait(15); PlayTone(Fa,10); Wait(15); PlayTone(RRe,15); Wait(30); PlayTone(Mi, 15); Wait(30); PlayTone(SSo,10); Wait(15); PlayTone(Ra,10); Wait(15); PlayTone(Do,15); Wait(30); PlayTone(Ra,10); Wait(15); PlayTone(Do,10); Wait(15); PlayTone(Re,10); Wait(45); PlayTone(Sol,15); Wait(15); PlayTone(FFa,15); Wait(15); PlayTone(Fa, 5); Wait(15); PlayTone(RRe,10); Wait(30); PlayTone(Mi,5);Wait(30); PlayTone(C,15); Wait(30); PlayTone(C,8); Wait(15); PlayTone(C,15); Wait(90); PlayTone(Sol,10); Wait(15); PlayTone(FFa,10); Wait(15); PlayTone(Fa,10); Wait(15); PlayTone(RRe,15); Wait(30); PlayTone(Mi, 15); Wait(30); PlayTone(SSo,10); Wait(15); PlayTone(Ra,10); Wait(15); PlayTone(Do,15); Wait(30); PlayTone(Ra,10); Wait(15); PlayTone(Do,10); Wait(15); PlayTone(Re,10); Wait(45); PlayTone(RRe,10); Wait(45); PlayTone(Re,10); Wait(45); PlayTone(Do,20); Wait(120) PlayTone(Do,10); Wait(15); PlayTone(Do,15); Wait(30); PlayTone(Do, 15); Wait(30); PlayTone(Do,10); Wait(15); PlayTone(Re,25); Wait(30); PlayTone(Mi,10); Wait(15); PlayTone(Do,15); Wait(30); PlayTone(Ra,10); Wait(15); PlayTone(So,15); Wait(60); PlayTone(Do,10); Wait(15); PlayTone(Do,15); PlayTone(Do, 15); Wait(30); PlayTone(Do,10); Wait(15); PlayTone(Re,10);Wait(15); PlayTone(Mi,25); Wait(135); PlayTone(Do,10); Wait(15); PlayTone(Do,15); Wait(30); PlayTone(Do, 15); Wait(30); PlayTone(Do,10); Wait(15); PlayTone(Re,25); Wait(30); PlayTone(Mi,10); Wait(15); PlayTone(Do,15); Wait(30); PlayTone(Ra,10); Wait(15); PlayTone(So,15); Wait(60); }} task main() { SetSensor(SENSOR_1, SENSOR_TOUCH); start play_music ; // 演奏を開始 OnFwd(OUT_A+OUT_B); // 前進 until (SENSOR_1 == 1); stop play_music ; // 演奏を停止 Off(OUT_A+OUT_B); // 動きも停止 } タッチセンサは2台で走っているときにぶつかると、反転して進むようにプログラムされています。光センサは黒線の上に来るとその反応したセンサの方向に曲がるようになっています。 *苦労した点 [#jb084107] ・壊れているのか、センサーが左の部分があまり反応せず、しっかりと曲がらせるのに苦労した。*追記*やはりセンサが1つ壊れているようでした。 ・ #ref(2007a/A1/課題2左/a.jpg,100%,コースの難しいとこ) 交差点が真っすぐではないというかなりの鬼コース。クリアするために交差点を通るときは左方向に斜めに走りながらクリアするということを思いつくまでにはかなり時間がかかりました。 ・期限を意識して1週間前から集まり始めたが、ぐだぐだして時間だけ消費して、あまり作業が進まなかった。みんな何をすればいいかよくわかっていなかった。 *がんばった点 [#q9a5edea] ・ロボットの紹介にも書いたが、タイヤの回る速度を遅くするために、ギアを組み合わせてマシンを作成した。 ・コースの形をミッキーにしたので、曲もそれにあわせてミッキーマウスマーチにした。 *まとめ [#edac1e22] ・しっかり今後はスケジュール管理を早めからして課題に取り組みたい。 ・難コースであっても知恵を出し切ればクリアできることを確認できた。 ・ロボの作成やプログラムがわかる人とわからない人がいたので、わかる人が来ないと作業が進まず、困ったので、みんなわかるように事前準備する必要があると思った。 -一人一人がちゃんと理解できるようにチーム内で努力しましょう。人まかせでは学習効果は期待できません。 -- [[松本]] &new{2007-06-22 (金) 08:50:26}; #comment