人生初めてのプログラミング
task main() { OnFwd(OUT_A+OUT_C); Wait(300); Off(OUT_A+OUT_C); }
前回は全く分からなかったプログラミングの送信方法が理解できて良かった。 ホームページを作成すると聞き、えらく難しい事をやるんだな〜と感じていたが、思いのほか簡単で理解しやすかった。
まだ専門用語がイマイチ。少しでも勉強し、理解できるように心がけたい。
自宅のパソコンでプログラミングしようとしたらエラーが発生。先生に救援を頼むが解決せず、自分で適当に操作したら問題解決。 早速そんなひねくれたパソコンで作ったプログラムを作成。
#define TURN_TIME 170 //180度回転 #define TURN_TIME2 85 //90度回転 #define PEN 5 //ペンの上下時間
task main() { OnFwd (OUT_B); Wait (PEN); Off(OUT_B); OnFwd (OUT_A+OUT_C); Wait (200); OnRev(OUT_A);OnFwd(OUT_C); Wait(TURN_TIME); Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(PEN); Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(100); OnRev(OUT_C); Wait(TURN_TIME2); OnFwd(OUT_C); Wait(75); OnRev(OUT_A); Wait(TURN_TIME); Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(PEN); Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(275); Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(PEN); Off(OUT_B); OnRev(OUT_A);OnFwd(OUT_C); Wait(TURN_TIME); OnFwd(OUT_A); Wait(200); OnRev(OUT_A); Wait(TURN_TIME); Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(PEN); Off(OUT_B); SetPower (OUT_C,0); OnFwd (OUT_A+OUT_C); Wait (200); Off(OUT_A+OUT_C); SetPower(OUT_C,7); OnRev(OUT_B); Wait(PEN); Off(OUT_B); OnRev(OUT_A);OnFwd(OUT_C); Wait(TURN_TIME); Off(OUT_A); SetPower(OUT_A,0); OnFwd(OUT_A+OUT_C); Wait(200); Off(OUT_A+OUT_C); }
まだ未完成。回転の時間が違うせいか、走っているうちに角度が変わっていく。
また、走行中の振動で上手く字が書けないため、改良が必要。クラッチとなる部分を作り、常にモータを回転させてみようと思う。
寝る間も惜しんで作った書道ロボットのお披露目。
初出陣は何故か二画目からペンが下りず、途中退場。皆の視線が痛い…
大学のパソコンで最終調整をしようとしたが、なぜだか送信できないトラブルが発生。だからMacは苦手なんです…
後に先生が手助けしてくれて、無事解決。どうやらページに貼り付けたものをそのままコピーすると全角の英語になり、認識できなくなるようだ。
そして最終調整をしていざ2度目の出陣。結果としては・・・やはり気まぐれなためか、三画目と四画目が離れてしまった。
(ここのページを参照2006a/A2/課題1右)
次からはセンサーを使うとの事。ちゃんと追いつけるよう、頑張りたいと思う。
task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_TOUCH); OnFwd(OUT_A+OUT_C); while(true) { if(SENSOR_1+SENSOR_3==1) { OnRev(OUT_A+OUT_C);Wait(30); OnFwd(OUT_A);Wait(90); OnFwd(OUT_C); } } }
task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_TOUCH); OnFwd(OUT_A+OUT_C); while(true) { if(SENSOR_1==1) { OnRev(OUT_A+OUT_C);Wait(30); OnFwd(OUT_A);Wait(130); OnFwd(OUT_C); } if(SENSOR_3==1) { OnRev(OUT_A+OUT_C);Wait(30); OnFwd(OUT_C);Wait(130); OnFwd(OUT_A); } } }
#define light 40 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT);
OnFwd(OUT_A+OUT_C); while(1) { if(SENSOR_1<light) { Float(OUT_C); } if(SENSOR_3<light) { Float(OUT_A); } if(SENSOR_2==1); { OnFwd(OUT_A);OnRev(OUT_C);Wait(180); } } }
#define light 35 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); OnFwd(OUT_B); while(1) { if(SENSOR_1<light) { Float(OUT_C); }else{ OnFwd(OUT_A+OUT_C); } if(SENSOR_3<light) { Float(OUT_A); }else{ OnFwd(OUT_A+OUT_C); } if(SENSOR_2==1); { OnFwd(OUT_A);OnRev(OUT_C);Wait(180); } } }
#define light 35 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); OnFwd(OUT_B); while(1) { if(SENSOR_1<light) { OnRev(OUT_A+OUT_C);Wait(30); OnFwd(OUT_C);Wait(30); OnFwd(OUT_A); }else{ OnFwd(OUT_A+OUT_C); } if(SENSOR_3<light) { OnRev(OUT_A+OUT_C);Wait(30); OnFwd(OUT_A);Wait(30); OnFwd(OUT_C); }else{ OnFwd(OUT_A+OUT_C); } if(SENSOR_2==1); { OnFwd(OUT_A);OnRev(OUT_C);Wait(180); } } }
#define TURN_TIME 360 int light_max=0; task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(0); OnFwd(OUT_A);OnRev(OUT_C); while(FastTimer(0)<TURN_TIME) { if(SENSOR_1>light_max) { light_max=SENSOR_1;light_max=FastTimer(0); } } while(FastTimer(0)<light_max) { OnFwd(OUT_A);OnRev(OUT_C); } Off(OUT_A+OUT_C); }
#define TURN_TIME 340 int light_max=0; task main()
{ SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(0); OnFwd(OUT_A); OnRev(OUT_C); while(FastTimer(0)<TURN_TIME) { if(SENSOR_2>light_max) { light_max=SENSOR_2;light_max=FastTimer(0); } } ClearTimer(0); while(FastTimer(0)<light_max) { OnFwd(OUT_A);OnRev(OUT_C); } Off(OUT_A+OUT_C);
}
#define TURN_TIME 310 int light_max=0; #define Do 523 #define Re 587 #define Mi 659 #define Fa 698 #define Sol 784 #define ma 55 #define k 50
task play_music() { PlayTone(Do,k);Wait(ma); PlayTone(Re,k);Wait(ma); PlayTone(Mi,k);Wait(ma); PlayTone(Fa,k);Wait(ma); PlayTone(Mi,k);Wait(ma); PlayTone(Re,k);Wait(ma); PlayTone(Do,k);Wait(100); PlayTone(Mi,k);Wait(ma); PlayTone(Fa,k);Wait(ma); PlayTone(Sol,k);Wait(ma); PlayTone(880,k);Wait(ma); PlayTone(Sol,k);Wait(ma); PlayTone(Fa,k);Wait(ma); PlayTone(Mi,k);Wait(100); PlayTone(Do,k);Wait(100); PlayTone(Do,k);Wait(100); PlayTone(Do,k);Wait(100); PlayTone(Do,k);Wait(100); PlayTone(Do,20);Wait(25); PlayTone(Do,20);Wait(25); PlayTone(Re,20);Wait(25); PlayTone(Re,20);Wait(25); PlayTone(Mi,20);Wait(25); PlayTone(Mi,20);Wait(25); PlayTone(Fa,20);Wait(25); PlayTone(Fa,20);Wait(25); PlayTone(Mi,30);Wait(50); PlayTone(Re,30);Wait(50); PlayTone(Do,30);Wait(50); } task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); Wait(100); while(1) { if(SENSOR_1&&SENSOR_3<55) { start play_music; ClearTimer(0); OnFwd(OUT_B); while(FastTimer(0)<TURN_TIME) { if(SENSOR_1>light_max) { light_max=SENSOR_1;light_max=FastTimer(0); } } OnRev(OUT_B);Wait(243);Off(OUT_B); stop play_music; ClearTimer(0); while(FastTimer(0)<light_max*143/100) { OnFwd(OUT_C);OnRev(OUT_A); } OnFwd(OUT_A); } if(SENSOR_1&&SENSOR_3>55) { OnFwd(OUT_A+OUT_C); } } }
#define TURN_TIME 400 int light_max=0; #define Do 523 #define Re 587 #define Mi 659 #define Fa 698 #define Sol 784 #define ma 55 #define k 50
task play_music() { PlayTone(Do,k);Wait(ma); PlayTone(Re,k);Wait(ma); PlayTone(Mi,k);Wait(ma); PlayTone(Fa,k);Wait(ma); PlayTone(Mi,k);Wait(ma); PlayTone(Re,k);Wait(ma); PlayTone(Do,k);Wait(100); PlayTone(Mi,k);Wait(ma); PlayTone(Fa,k);Wait(ma); PlayTone(Sol,k);Wait(ma); PlayTone(880,k);Wait(ma); PlayTone(Sol,k);Wait(ma); PlayTone(Fa,k);Wait(ma); PlayTone(Mi,k);Wait(100); PlayTone(Do,k);Wait(100); PlayTone(Do,k);Wait(100); PlayTone(Do,k);Wait(100); PlayTone(Do,k);Wait(100); PlayTone(Do,20);Wait(25); PlayTone(Do,20);Wait(25); PlayTone(Re,20);Wait(25); PlayTone(Re,20);Wait(25); PlayTone(Mi,20);Wait(25); PlayTone(Mi,20);Wait(25); PlayTone(Fa,20);Wait(25); PlayTone(Fa,20);Wait(25); PlayTone(Mi,30);Wait(50); PlayTone(Re,30);Wait(50); PlayTone(Do,30);Wait(50); } task main()
{ SetSensor(SENSOR_1,SENSOR_LIGHT); while(1) { if(SENSOR_1<50) { start play_music; ClearTimer(0); OnFwd(OUT_A); OnRev(OUT_C); while(FastTimer(0)<TURN_TIME) { if(SENSOR_1>light_max) { light_max=SENSOR_1;light_max=FastTimer(0); } }
ClearTimer(0); while(FastTimer(0)<light_max) { OnFwd(OUT_A);OnRev(OUT_C); } OnFwd(OUT_C); }
if(SENSOR_1>50) { stop play_music; OnFwd(OUT_A+OUT_C); } } }