2015a/Member/toto/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015a/Member]]
* 課題1 [#k06be853]
** 目標 [#c88c1b53]
名前の中の一文字「青」を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つ使おうとしていたが、うまくいかなかった。無駄にごてごてするよりも、シンプルな方が動作が軽くて精度もあがり良いと思った。
終了行:
[[2015a/Member]]
* 課題1 [#k06be853]
** 目標 [#c88c1b53]
名前の中の一文字「青」を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つ使おうとしていたが、うまくいかなかった。無駄にごてごてするよりも、シンプルな方が動作が軽くて精度もあがり良いと思った。
ページ名: