[[2019a/Member] #contents *課題について [#ydd1bdf8] これまで住んだことのある都道府県名,市町村名,地区名などの中から2文字以上,かつ合計12画以上のものを選び,それをA4の紙にかくロボットを制作せよ。 「信州」という地名を選んだ。 *ロボットの説明 [#mdcbc027] 3つのモーターを前後,左右,ペンの上げ下げに使った。 #ref(./IMG_5354.JPG,25%) 全体として動きやすくするために動力のタイヤ以外に本体の前やレールにタイヤを取り付けた。 #ref(./IMG_5355.JPG,25%) 滑らかに動かすために凹凸のない部分を使ってレールを作った。 また,歯車を2個使い,一つのモーターで2個のタイヤが動くようにした。(本体部分も同様) #ref(./IMG_5356.JPG,25%) ペンは止める位置を調節し,上げたときに止まるようにした。 *プログラムについて [#f7923aa0] **プログラムについて意識したこと [#h8850904] まずはペンを上げる,下げるなどを定義しました。 #define Up_Pen OnFwd(OUT_B);Wait(200);Off(OUT_B); #define Down_Pen OnRev(OUT_B);Wait(10);Off(OUT_B); 信州の「言」の字は往復で横に線を6回書くことでプログラムの量を減らしています。 #define Go OnFwd(OUT_C);Wait(20);Off(OUT_C); #define Yoko Down_Pen;OnFwd(OUT_A);Wait(20);Off(OUT_A);Up_Pen;OnRev(OUT_A);Wait(22);Off(OUT_A); 「州」の字は点と縦線を引くプログラムを3回繰り返して簡単にしています。 #define Tate OnFwd(OUT_C);Wait(10);Off(OUT_C);Down_Pen;Up_Pen;OnFwd(OUT_A);OnRev(OUT_C);Wait(1);Off(OUT_A C);Down_Pen;OnFwd(OUT_C);Wait(80);Off(OUT_C);Up_Pen;OnFwd(OUT_A);Wait(4);Off(OUT_A);OnRev(OU T_C);Wait(60);Off(OUT_A); **全体のプログラム [#s3e95140] #define Up_Pen OnFwd(OUT_B);Wait(200);Off(OUT_B); #define Down_Pen OnRev(OUT_B);Wait(10);Off(OUT_B); #define Go OnFwd(OUT_C);Wait(20);Off(OUT_C); #define Yoko Down_Pen;OnFwd(OUT_A);Wait(20);Off(OUT_A);Up_Pen;OnRev(OUT_A);Wait(22);Off(OUT_A); #define Tate OnFwd(OUT_C);Wait(10);Off(OUT_C);Down_Pen;Up_Pen;OnFwd(OUT_A);OnRev(OUT_C);Wait(1);Off(OUT_A C);Down_Pen;OnFwd(OUT_C);Wait(80);Off(OUT_C);Up_Pen;OnFwd(OUT_A);Wait(4);Off(OUT_A);OnRev(OU T_C);Wait(60);Off(OUT_A); task main() { Up_Pen; ←人偏の1画目開始 Up_Pen; //人偏の1画目開始// Wait(100); Down_Pen; OnFwd(OUT_C); OnRev(OUT_A); Wait(30); Off(OUT_AC); ←人偏の1画目終了 Up_Pen; ←人偏の2画目を書くための移動開始 Off(OUT_AC); //人偏の1画目終了// Up_Pen; //人偏の2画目を書くための移動開始// OnFwd(OUT_A); Wait(5); Off(OUT_A); ←人偏の2画目を書くための移動終了 Off(OUT_A); //人偏の2画目を書くための移動終了// Down_Pen; OnFwd(OUT_C); Wait(80); Off(OUT_C); ←人偏の2画目終了 Up_Pen; ←言を書くための移動開始 Off(OUT_C); //人偏の2画目終了// Up_Pen; //言を書くための移動開始// OnFwd(OUT_A); OnRev(OUT_C); Wait(10); Off(OUT_A); Wait(60); Off(OUT_C); ←言を書くための移動終了 Yoko; ←言の横棒を書くためのプログラムを6回繰り返す Off(OUT_C); //言を書くための移動終了// Yoko; //言の横棒を書くためのプログラムを6回繰り返す// Go; Yoko; Go; Yoko; Go; Yoko; Go; Yoko; Go; Yoko; ←言の横棒を6回書くのを終了 Down_Pen; ←ここから言の縦棒を書いていく Yoko; //言の横棒を6回書くのを終了// Down_Pen; //ここから言の縦棒を書いていく// OnFwd(OUT_C); Wait(10); Off(OUT_C); Up_Pen; OnRev(OUT_C); OnFwd(OUT_A); Wait(10); Off(OUT_AC); OnFwd(OUT_C); Wait(20); Off(OUT_C); Down_Pen; Up_Pen; ←言の縦棒を書くのを終了 OnRev(OUT_A); ←州を書くための移動開始 Up_Pen; //言の縦棒を書くのを終了// OnRev(OUT_A); //州を書くための移動開始// OnFwd(OUT_C); Wait(30); Off(OUT_AC); ←州を書くための移動終了 Tate; ←同じプログラムを3回繰り返して州を書いていく Off(OUT_AC); //州を書くための移動終了// Tate; //同じプログラムを3回繰り返して州を書いていく// Tate; Tate; Off(OUT_C); ←全体終了 Off(OUT_C); //全体終了// } **ロッボトで書いた字がこちら [#c4ba611f] #ref(./IMG_5352.JPG,25%) *まとめ [#p9b88766] 同じ動きを繰り返すことが多かったので比較的短いプログラムになったとは思いますが,歯車をあまり組み込まなかったので動きが速くなってしまい安定して書けることが少なかったと思います。一番書けたと思われる字もギリギリ読めるくらいになってしまったので少し残念でした。 今後はこの反省を生かし,納得のいくロボットを作りたいです。