[[2017a/Member]] #contents *課題について [#sf926044] 今回の課題については[[2017a/Mission1]]を参照。 漢字は「知」を選んだ。選んだ理由は、新たな知識や生活の知恵など多くのことを知るチャンスとなると考えたからである。 *ロボット本体について [#sb9444f0] **基本の構造 [#i6c7e118] #ref(IMG_0923[50].JPG) 授業で製作したものを利用し、それにペンの上下のためのアームを取り付けた。そのため紙の上をロボットが動き回って漢字を書く形となる。ペンは筆ペンを用いた。 **アーム[#rb622432] 構造はモーターの回転と一緒にペンを回す単純なものにした。 取り付ける位置をペンを右タイヤの直線上約10センチの所に置くことで、 その結果タイヤを中心としたターンを使って簡単にペンの位置をずらさずに向きを変えることができるようにした。その方法は、 ・右タイヤをペンの位置まで移動 ・左タイヤのみを回転させ右タイヤを軸としたターンで回りたい角度分ターン ・ペンを右タイヤの位置に移動 #ref(2017a/Member/Ryoma/Mission1/IMG_0924.jpg) *プログラムについて [#v9c48277] **マクロと定数 [#hcfc66c8] まず基本の動作であるペンの上げ下げと、左右の回転、前後進を定義した。 #define up OnRev(OUT_A,30);Wait(300);Off(OUT_A);//ペンを上げる #define down OnFwd(OUT_A,20);Wait(300);Off(OUT_A);//ペンを下げる #define turnl(t) OnRev(OUT_C,63);Wait(t);Off(OUT_C);//左折 #define turnr(t) OnFwd(OUT_C,63);Wait(t);Off(OUT_C);//右折 #define front(t) OnFwd(OUT_B,34);OnFwd(OUT_C,32);Wait(t);Off(OUT_BC);//直進 #define back(t) OnRev(OUT_B,36);OnRev(OUT_C,34);Wait(t);Off(OUT_BC);//後進 ペンを片方のタイヤに寄せたため同じ回転スピードだと曲がってしまうため左右のタイヤで変化をつけまっすぐ進むよう調節した。 次に漢字を書くのに必要な直線の長さと回転の角度の時間を定義した。 #define ftime 960//ペンの位置までタイヤを動かす時間 #define cm1_5 140//1.5センチ進む時間 #define twocm 186//2センチ #define threecm 279//3センチ #define fourcm 372//4センチ #define fivecm 465//5センチ #define sixcm 558//6センチ #define tencm 930//10センチ #define turn90 840//90度曲がる時間 #define turn30 280//30度 #define turn120 1120//120度 #define turn60 560//60度 これを定めたことで長さの調節がしやすくなった。 最後に口の部分の一画分を定義した。 #define box up;front(ftime);turnr(turn90);back(ftime);down;front(fivecm); **漢字 [#u5b3d324] 書き順は書きやすくするために本来のものとは変えた。 #ref(IMG_0931[54].JPG) 書き始めの場所をわかりやすくするために、初めにタイヤを置いた位置から書き始めるようにした。 task main() { up; turnr(turn30); back(ftime); down; front(fourcm);//一画目 up; back(93); front(ftime); turnl(turn120); back(ftime); down; front(fourcm);//二画目 up; front(tencm); turnl(turn90); back(1120); down; back(fourcm);//三画目 Wait(200); OnRev(OUT_B,30); OnRev(OUT_C,50); Wait(fourcm); Off(OUT_BC); up; OnFwd(OUT_B,30); OnFwd(OUT_C,50); Wait(fourcm); Off(OUT_BC); front(1146); turnl(turn90); back(cm1_5); back(ftime); down; front(threecm);//四画目 up; back(cm1_5); front(ftime); turnr(turn60); back(1100); down; back(threecm);//五画目 up; front(ftime); turnr(turn30); back(ftime); front(sixcm); front(ftime); turnr(turn90); back(tencm); down; front(fivecm);//六画目 box;//七画目 box;//八画目 box;//九画目 up; up; turnr(turn30); back(ftime); down; front(fourcm);//一画目 up; back(93); front(ftime); turnl(turn120); back(ftime); down; front(fourcm);//二画目 up; front(tencm); turnl(turn90); back(1120); down; back(fourcm);//三画目 Wait(200); OnRev(OUT_B,30); OnRev(OUT_C,50); Wait(fourcm); Off(OUT_BC); up; OnFwd(OUT_B,30); OnFwd(OUT_C,50); Wait(fourcm); Off(OUT_BC); front(1146); turnl(turn90); back(cm1_5); back(ftime); down; front(threecm);//四画目 up; back(cm1_5); front(ftime); turnr(turn60); back(1100); down; back(threecm);//五画目 up; front(ftime); turnr(turn30); back(ftime); front(sixcm); front(ftime); turnr(turn90); back(tencm); down; front(fivecm);//六画目 box;//七画目 box;//八画目 box;//九画目 up; } #ref(IMG_0929[53].JPG) 出来上がったもの。 *問題点 [#u7f334b9] 今回は様々な点で調整が必要だったが調整をしているうちに電池のパワーが落ちてきてしまい思うように定まらなかった。 また、ペンとタイヤを直線上に置いたことと、筆ペンを用いたことでで、前進しながら文字を書くと、まだインクが乾かないうちにタイヤがその上を走るためタイヤにインクが付き紙にタイヤの跡がついてしまった。 *最後に [#q956c8d2] 今回の課題では正しい点から書き始めるためのロボットの構造とプログラムの考え方自体は悪くなかったと思うが、電池のパワーダウンについてあまり考えていなかったためあまりうまくいかなかった。より動作回数を減らして調節しなければならなかった。