[[2015a/Member]] * 課題1 [#k06be853] ** 目標 [#c88c1b53] 名前の中の一文字をA4用紙の中に書く、 ただし7画以上の文字を選ぶ。 名前の中の一文字「青」をA4用紙の中に書く、 ただし7画以上の文字を選ぶ。 ** 機体説明 [#kc9f6885] アームを一つ使って文字を書く。車体を自在に動けるようにすることで、いろんな文字に対応できようにした。また、ペンの取り付けを簡単にするために、固定の方法を輪ゴムを使用せず、物に挟んで固定する方法をとった。 #ref(./IMG_3165.JPG) ** プログラム [#z31e87d3] //////////////////サブルーチン/////////////////// //前進させる sub Foward(int Fdist){ RotateMotor(OUT_BC,70,Fdist); } //後退させる sub Back(int Bdist){ RotateMotor(OUT_BC,-70,Bdist); } //超信地旋回 void Turn(){ RotateMotorEx(OUT_BC,70,356,100,true,true); } //改行させる(縦) void NextLine(){ RotateMotorEx(OUT_BC,70,356,-100,true,true); RotateMotor(OUT_BC,70,60); RotateMotorEx(OUT_BC,70,356,100,true,true); } //改行させる(横) void NextLine2(){ RotateMotorEx(OUT_BC,70,356,100,true,true); RotateMotor(OUT_BC,70,60); RotateMotorEx(OUT_BC,70,356,-100,true,true); } //線を引く sub WriteLine(int Wdist){ RotateMotor(OUT_A,20,154); RotateMotor(OUT_BC,-70,Wdist); RotateMotor(OUT_A,-50,150); } ///////////////// メイン //////////////////// task main() { //水平方向の一番上の段から書いていく WriteLine(500); NextLine(); Foward(400); WriteLine(300); NextLine(); Foward(500); WriteLine(1000); NextLine(); Foward(550); WriteLine(400); NextLine(); Foward(400); WriteLine(400); //垂直方向の一番左から書く Foward(1350); PlayTone(1320,30); Turn(); Foward(152); WriteLine(400); NextLine2(); Foward(764); WriteLine(205); NextLine2(); Back(53); WriteLine(400); } -サブルーチンを多用することでメインプログラムの改変を簡単にし、視覚的にも見やすくした -OnFwdの命令を極力控え、RotateMotorの命令を多用することで、電池の残量にとらわれずに、安定して毎回同じ動作が出来るようにした。 -文字で同じ向きの部分を一気に書くことで、無駄な動作を省いた。 **感想・反省 [#l7b3d3ba] はじめはアームをもっと複雑にして、モーターを2つ使おうとしていたが、うまくいかなかった。無駄にごてごてするよりも、シンプルな方が動作が軽くて精度もあがり良いと思った。