[[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つ使おうとしていたが、うまくいかなかった。無駄にごてごてするよりも、シンプルな方が動作が軽くて精度もあがり良いと思った。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS