2018b/Member/twinrabi/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*課題1 [#of8df6fe]
-指定課題
--これまで住んだことのある都道府県名、市町村名、地区名な...
-自分の描く文字
--自分の住んだことがある長野県須坂市の「田の神」という地...
*ロボットの説明 [#oa58158e]
**ロボットの概要 [#a10f158b]
---&size(15){タイヤによって紙面上を移動し、ペンを上げ下げ...
---&size(15){右前輪をモーターB、左前輪をモーターCとした前...
#ref(rb_f.jpeg)
#ref(rb_atach.jpeg)
#ref(rb_bt.jpeg)
---&size(15){ペンの上げ下げにはモーターAを使用};
#ref(A_s.jpeg)
#ref(A_f.jpeg)
***ロボットの移動 [#c693a8ce]
---主に2輪の前輪を回転させることで移動していく
---後輪は固定型にすると摩擦が大きくうまく曲がれなかったの...
---時間指定によるモーターの稼働は電池残量による距離の変化...
***ペンの上げ下げ [#na1a81c1]
---モーターAを回転させペンと紙面を触れさせることで字を描...
---初期はモーターA前方で上下させていたが、前輪の旋回によ...
---輪ゴムの止め方もペン先がぶれないように左右から固定した
*プログラムの説明 [#n3de16bb]
-主なコマンドの説明
:RotateMotor(OUT_モーター名,パワー,角度)|指定したモーター...
今回のロボットにおいてB,Cどちらか片方を指定すると左右どち...
B,C両方を指定すると前進する
:RotateMotorEx(OUT_モーター名1,モーター名2,パワー,角度,tr...
今回のロボットにおいてB,Cを指定すると旋回する
:int X=0&br;for(X=0;X<Y;X++){プログラム}|{}内のプログラム...
-使用マクロ&br;
よく行う動作をマクロとして以下のように定義した。
:#define pen_up RotateMotor(OUT_A,30,15);Off(OUT_A)|ペン...
:#define pen_down RotateMotor(OUT_A,30,-15);Off(OUT_A)|ペ...
:#define turn RotateMotor(OUT_B,30,180);RotateMotor(OUT_C...
:#define n_turn RotateMotor(OUT_B,-30,165);RotateMotor(OU...
:#define stp Off(OUT_BC)|モーターの回転を止める(動作後の...
**ロボットによる字の書き順 [#f9c466d0]
&size(15){矢印の方向に番号順に描いていく};&br;
&size(15){またロボットで描きやすくするために実際の書き順...
#ref(I_W.jpeg);
**字を描くプログラム [#p12260c1]
&color(red){上記の通りズレ抑制のため1動作完了ごとにモータ...
&color(red){ペンを上げている状態での移動は旋回によるズレ...
&color(red){最初はペンを下した状態で始める};
***「田」を描くプログラム [#x71f3e6f]
---最初に{口}を描く
int i=0;
for(i=0;i<3;i++){
RotateMotor(OUT_BC,40,90); //直線を描く
stp;
pen_up;
turn: //左を向く
RotateMotor(OUT_BC,30,5); //位置を調整
stp;
pen_down;
}
RotateMotor(OUT_BC,40,90);
stp;
pen_up;
turn;
RotateMotor(OUT_BC,30,5);
stp;
真っ直ぐ進み90度左を向く動作を4回繰り返すことで描く(プロ...
---「田」の中の{十}を描く
RotateMotor(OUT_BC,30,40);
turn;
まず「田」の中ほどに行き、左を向く
pen_down;
RotateMotor(OUT_BC,30,110);
stp;
そして{一}を描く
pen_up;
RotateMotor(OUT_BC,30,100); //位置を調整
stp;
RotateMotor(OUT_B,-30,360); //右を向く
stp;
RotateMotor(OUT_BC,30,20); //位置を調整
stp;
pen_down;
RotateMotor(OUT_BC,30,100); //{|}を描く
stp;
pen_up;
少し前に進み位置を調整した後、右を向かせ真っ直ぐ進ませる...
--「田」から「の」への移動
RotateMotor(OUT_BC,30,120);
stp;
***「の」を描くプログラム [#w3e8ccd1]
---{ノ}を描く
RotateMotor(OUT_B,-20,20); //斜め少し右を向く
stp;
pen_down;
RotateMotor(OUT_C,30,100); //{ノ}を描く
stp;
pen_up;
向きを調節し片側のモーターだけを動かすことで曲線を描く
RotateMotor(OUT_BC,30,55);
stp;
RotateMotorEx(OUT_BC,30,200,100,true,false); //旋回し...
stp;
RotateMotor(OUT_BC,-30,60); //位置を調整
stp;
int k=0;
for(k=0;k<4;k++){
pen_down;
RotateMotor(OUT_BC,30,40);
stp;
pen_up;
RotateMotor(OUT_BC,30,40); //位置を調整
stp;
RotateMotorEx(OUT_BC,30,100,100,true,false); //旋回...
stp;
RotateMotor(OUT_BC,-30,40); //位置を調整
stp;
}
pen_down;
RotateMotor(OUT_BC,30,40);
stp;
「の」の曲線を小さくまとめるのが難しいため、短い直線を書...
--「の」から「神」への移動
pen_up;
RotateMotor(OUT_B,30,100);
stp;
RotateMotor(OUT_BC,30,50);
stp;
***「神」を描くプログラム [#n229af11]
---{申}を描く
int l=0;
for(l=0;l<4;l++){
pen_down;
RotateMotor(OUT_BC,30,40);
stp;
pen_up;
turn;
RotateMotor(OUT_BC,20,5);
stp;
}
「田」と同様ではあるが、少し小さめな{口}を描く&br;「田...
RotateMotor(OUT_BC,30,20); //移動
stp;
turn;
RotateMotor(OUT_BC,30,10); //位置を調整
stp;
pen_down;
RotateMotor(OUT_BC,30,40); //{一}を描く
stp;
pen_up;
RotateMotor(OUT_BC,30,60); //位置を調整
stp;
n_turn; //右を向く
RotateMotor(OUT_BC,30,70); //下に降りる
stp;
RotateMotorEx(OUT_BC,30,320,100,true,false); //180...
stp;
pen_down;
RotateMotor(OUT_BC,30,130); //{|}を描く
stp;
同じように{十}を描くが{|}の部分を長めにとるので、一度...
--{申}から{ネ}への移動
pen_up;
turn;
RotateMotor(OUT_BC,30,110);
stp;
---{ネ}を描く
RotateMotor(OUT_B,30,60);Off(OUT_B); //斜め少し右を...
stp;
pen_down;
RotateMotor(OUT_BC,30,20);
stp;
上の点を描いた後
pen_up;
RotateMotor(OUT_BC,30,120); //移動
stp;
RotateMotorEx(OUT_BC,30,350,100,true,false); //旋回
stp;
RotateMotor(OUT_BC,-30,25); //調整
stp;
pen_down;
RotateMotor(OUT_BC,30,70); //上の横棒
stp;
pen_up;
RotateMotor(OUT_BC,30,65); //調整
stp;
RotateMotorEx(OUT_BC,30,240,100,true,false);
stp;
RotateMotor(OUT_BC,-30,20); //調整
stp;
pen_down;
RotateMotor(OUT_BC,30,100); //払い
stp;
{フ}の部分を描き
pen_up;
RotateMotor(OUT_BC,-30,40); //調整
stp;
RotateMotorEx(OUT_BC,30,500,100,true,false); //旋回
stp;
RotateMotor(OUT_BC,-30,30); //調整
stp;
pen_down;
RotateMotor(OUT_BC,30,60); //真ん中の縦棒
stp;
pen_up;
RotateMotor(OUT_BC,-30,50); //調整
stp;
RotateMotorEx(OUT_BC,30,500,100,true,false); //旋回
stp;
RotateMotor(OUT_BC,-30,30); //調整
stp;
pen_down;
RotateMotor(OUT_BC,30,40); //横の払い
stp;
前後移動を繰り返しながら旋回して、残りの部分を描く
**実際にロボットで描いた「田の神」 [#vc8ffe50]
#ref(R_W.jpeg);
「田」はそこそこ判別できる程度だと思うが、「神」の{申}...
「の」の曲線部分はうまくできたと思う。
*感想・反省点 [#q2282226]
字を描くロボットを作成するのに思いのほか手間取り、あまり...
字をロボットで描く中で、同じプログラムを使用しても同じよ...
ロボット作成からレポートの完成まで時間がかかり、発表の時...
*参考 [#ve7b2fff]
---instruction
終了行:
目次
#contents
*課題1 [#of8df6fe]
-指定課題
--これまで住んだことのある都道府県名、市町村名、地区名な...
-自分の描く文字
--自分の住んだことがある長野県須坂市の「田の神」という地...
*ロボットの説明 [#oa58158e]
**ロボットの概要 [#a10f158b]
---&size(15){タイヤによって紙面上を移動し、ペンを上げ下げ...
---&size(15){右前輪をモーターB、左前輪をモーターCとした前...
#ref(rb_f.jpeg)
#ref(rb_atach.jpeg)
#ref(rb_bt.jpeg)
---&size(15){ペンの上げ下げにはモーターAを使用};
#ref(A_s.jpeg)
#ref(A_f.jpeg)
***ロボットの移動 [#c693a8ce]
---主に2輪の前輪を回転させることで移動していく
---後輪は固定型にすると摩擦が大きくうまく曲がれなかったの...
---時間指定によるモーターの稼働は電池残量による距離の変化...
***ペンの上げ下げ [#na1a81c1]
---モーターAを回転させペンと紙面を触れさせることで字を描...
---初期はモーターA前方で上下させていたが、前輪の旋回によ...
---輪ゴムの止め方もペン先がぶれないように左右から固定した
*プログラムの説明 [#n3de16bb]
-主なコマンドの説明
:RotateMotor(OUT_モーター名,パワー,角度)|指定したモーター...
今回のロボットにおいてB,Cどちらか片方を指定すると左右どち...
B,C両方を指定すると前進する
:RotateMotorEx(OUT_モーター名1,モーター名2,パワー,角度,tr...
今回のロボットにおいてB,Cを指定すると旋回する
:int X=0&br;for(X=0;X<Y;X++){プログラム}|{}内のプログラム...
-使用マクロ&br;
よく行う動作をマクロとして以下のように定義した。
:#define pen_up RotateMotor(OUT_A,30,15);Off(OUT_A)|ペン...
:#define pen_down RotateMotor(OUT_A,30,-15);Off(OUT_A)|ペ...
:#define turn RotateMotor(OUT_B,30,180);RotateMotor(OUT_C...
:#define n_turn RotateMotor(OUT_B,-30,165);RotateMotor(OU...
:#define stp Off(OUT_BC)|モーターの回転を止める(動作後の...
**ロボットによる字の書き順 [#f9c466d0]
&size(15){矢印の方向に番号順に描いていく};&br;
&size(15){またロボットで描きやすくするために実際の書き順...
#ref(I_W.jpeg);
**字を描くプログラム [#p12260c1]
&color(red){上記の通りズレ抑制のため1動作完了ごとにモータ...
&color(red){ペンを上げている状態での移動は旋回によるズレ...
&color(red){最初はペンを下した状態で始める};
***「田」を描くプログラム [#x71f3e6f]
---最初に{口}を描く
int i=0;
for(i=0;i<3;i++){
RotateMotor(OUT_BC,40,90); //直線を描く
stp;
pen_up;
turn: //左を向く
RotateMotor(OUT_BC,30,5); //位置を調整
stp;
pen_down;
}
RotateMotor(OUT_BC,40,90);
stp;
pen_up;
turn;
RotateMotor(OUT_BC,30,5);
stp;
真っ直ぐ進み90度左を向く動作を4回繰り返すことで描く(プロ...
---「田」の中の{十}を描く
RotateMotor(OUT_BC,30,40);
turn;
まず「田」の中ほどに行き、左を向く
pen_down;
RotateMotor(OUT_BC,30,110);
stp;
そして{一}を描く
pen_up;
RotateMotor(OUT_BC,30,100); //位置を調整
stp;
RotateMotor(OUT_B,-30,360); //右を向く
stp;
RotateMotor(OUT_BC,30,20); //位置を調整
stp;
pen_down;
RotateMotor(OUT_BC,30,100); //{|}を描く
stp;
pen_up;
少し前に進み位置を調整した後、右を向かせ真っ直ぐ進ませる...
--「田」から「の」への移動
RotateMotor(OUT_BC,30,120);
stp;
***「の」を描くプログラム [#w3e8ccd1]
---{ノ}を描く
RotateMotor(OUT_B,-20,20); //斜め少し右を向く
stp;
pen_down;
RotateMotor(OUT_C,30,100); //{ノ}を描く
stp;
pen_up;
向きを調節し片側のモーターだけを動かすことで曲線を描く
RotateMotor(OUT_BC,30,55);
stp;
RotateMotorEx(OUT_BC,30,200,100,true,false); //旋回し...
stp;
RotateMotor(OUT_BC,-30,60); //位置を調整
stp;
int k=0;
for(k=0;k<4;k++){
pen_down;
RotateMotor(OUT_BC,30,40);
stp;
pen_up;
RotateMotor(OUT_BC,30,40); //位置を調整
stp;
RotateMotorEx(OUT_BC,30,100,100,true,false); //旋回...
stp;
RotateMotor(OUT_BC,-30,40); //位置を調整
stp;
}
pen_down;
RotateMotor(OUT_BC,30,40);
stp;
「の」の曲線を小さくまとめるのが難しいため、短い直線を書...
--「の」から「神」への移動
pen_up;
RotateMotor(OUT_B,30,100);
stp;
RotateMotor(OUT_BC,30,50);
stp;
***「神」を描くプログラム [#n229af11]
---{申}を描く
int l=0;
for(l=0;l<4;l++){
pen_down;
RotateMotor(OUT_BC,30,40);
stp;
pen_up;
turn;
RotateMotor(OUT_BC,20,5);
stp;
}
「田」と同様ではあるが、少し小さめな{口}を描く&br;「田...
RotateMotor(OUT_BC,30,20); //移動
stp;
turn;
RotateMotor(OUT_BC,30,10); //位置を調整
stp;
pen_down;
RotateMotor(OUT_BC,30,40); //{一}を描く
stp;
pen_up;
RotateMotor(OUT_BC,30,60); //位置を調整
stp;
n_turn; //右を向く
RotateMotor(OUT_BC,30,70); //下に降りる
stp;
RotateMotorEx(OUT_BC,30,320,100,true,false); //180...
stp;
pen_down;
RotateMotor(OUT_BC,30,130); //{|}を描く
stp;
同じように{十}を描くが{|}の部分を長めにとるので、一度...
--{申}から{ネ}への移動
pen_up;
turn;
RotateMotor(OUT_BC,30,110);
stp;
---{ネ}を描く
RotateMotor(OUT_B,30,60);Off(OUT_B); //斜め少し右を...
stp;
pen_down;
RotateMotor(OUT_BC,30,20);
stp;
上の点を描いた後
pen_up;
RotateMotor(OUT_BC,30,120); //移動
stp;
RotateMotorEx(OUT_BC,30,350,100,true,false); //旋回
stp;
RotateMotor(OUT_BC,-30,25); //調整
stp;
pen_down;
RotateMotor(OUT_BC,30,70); //上の横棒
stp;
pen_up;
RotateMotor(OUT_BC,30,65); //調整
stp;
RotateMotorEx(OUT_BC,30,240,100,true,false);
stp;
RotateMotor(OUT_BC,-30,20); //調整
stp;
pen_down;
RotateMotor(OUT_BC,30,100); //払い
stp;
{フ}の部分を描き
pen_up;
RotateMotor(OUT_BC,-30,40); //調整
stp;
RotateMotorEx(OUT_BC,30,500,100,true,false); //旋回
stp;
RotateMotor(OUT_BC,-30,30); //調整
stp;
pen_down;
RotateMotor(OUT_BC,30,60); //真ん中の縦棒
stp;
pen_up;
RotateMotor(OUT_BC,-30,50); //調整
stp;
RotateMotorEx(OUT_BC,30,500,100,true,false); //旋回
stp;
RotateMotor(OUT_BC,-30,30); //調整
stp;
pen_down;
RotateMotor(OUT_BC,30,40); //横の払い
stp;
前後移動を繰り返しながら旋回して、残りの部分を描く
**実際にロボットで描いた「田の神」 [#vc8ffe50]
#ref(R_W.jpeg);
「田」はそこそこ判別できる程度だと思うが、「神」の{申}...
「の」の曲線部分はうまくできたと思う。
*感想・反省点 [#q2282226]
字を描くロボットを作成するのに思いのほか手間取り、あまり...
字をロボットで描く中で、同じプログラムを使用しても同じよ...
ロボット作成からレポートの完成まで時間がかかり、発表の時...
*参考 [#ve7b2fff]
---instruction
ページ名: