2016b/Member/god22ila/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#Contents
*課題2の内容 [#ifff3ad7]
#ref(2016b/Member/god22ila/Mission2/2016b-mission2.png,50...
今回の課題2の内容は上図のコースにライントレーサーを走らせ...
*ロボットの説明 [#r97767b5]
**本体について [#he30576e]
#ref(2016b/Member/god22ila/Mission2/IMG_hontai2.JPG,50%,...
横から見た写真 重心が後ろによっている
#ref(2016b/Member/god22ila/Mission2/IMG_usiro.JPG,50%,本...
後ろから見た写真
#ref(2016b/Member/god22ila/Mission2/IMG_sita.JPG,50%,本体)
下から見た写真
#ref(2016b/Member/god22ila/Mission2/IMG_hontai.jpg,50%,本...
前から見た写真
なるべくセンサーと紙の間の距離が近くになるようにするため...
構造上タイヤ間の距離が離れてしまったが特に問題はなかった。
**アームについて [#t2a53cfc]
アームはショベルカーのような構造にした。ピンポン球は丸く...
#ref(2016b/Member/god22ila/Mission2/IMG_arm1.jpg,50%,本体)
**ロボットの動き [#w37f0e79]
ロボットはラインの黒と紙の白い部分を交互に読み込みながら...
**交差点の判断 [#f9d7486f]
交差点を判断するにはタイマーを用いて黒と認識ししている時...
*プログラミングについて [#t3de1858]
#define turnright OnFwd(OUT_C,40);//右に曲がる
#define turnleft OnFwd(OUT_B,40);//左に曲がる
#define senkairight OnFwdSync(OUT_BC,40,-100);//右に旋回
#define senkaileft OnFwdSync(OUT_BC,40,100);//左に旋回
#define gomae OnFwdSync(OUT_BC,40,0);//前進
#define kousatenmigi OnFwd(OUT_C,40); Wait(500);OnFwdSyn...
#define kousatenzensin OnFwd(OUT_C,40);Wait(1000);OnFwd...
**アームの上げ下げ [#qdffd117]
#define armup OnFwd(OUT_A,25);Wait(700);Off(OUT_A);//ア...
#define armdown OnRev(OUT_A,25);Wait(700);Off(OUT_A);//...
**交差点上での音 [#s6e43fdc]
#define oto PlaySound(SOUND_CLICK);Wait(600);Wait(1000);...
交差点に差し掛かったことを確認するために音を鳴らす。T字路...
**センサーとタイマーの起動 [#eb19429c]
task main()
{
SetSensorLight(S1);//光センサー起動
int n=0; //nの値を決める。
long t0 = CurrentTick();//時間を測り始める直前の時刻をt...
armup//アームを上げる
まず、タイマーと光センサーを起動させる。
**各地点とnの値について [#de52b4f1]
自分のロボットが走るコースにはP,Q,Q,R,P,Sの順に交差点また...
while(n<7){
t0 = CurrentTick();
while(CurrentTick()-t0<600){ //CurrentTick()とt0の差が...
if(SENSOR_1>42){ //もしセンサーの値が42以上だったら左...
senkaileft
t0 = CurrentTick();
}
else if(SENSOR_1>40){ //もしセンサーの値が40以上なら...
turnleft
t0 = CurrentTick();
}
else if(SENSOR_1>38){ //もしセンサーの値が38以上...
gomae
t0 = CurrentTick();
}
else if(SENSOR_1>37){ //もしセンサーの値が37以上...
turnright
t0 = CurrentTick();
}
else{
senkairight //どれでもなければ右に旋回
}
}
Off(OUT_BC);
nの値が7以下で、CurrentTick()とt0の差が0.6秒以下の時それ...
while(n==6){ //T字路なので音を鳴らさない
kousatenzensin
Off(OUT_BC);
armup
OnFwdSync(OUT_BC,40,0);
Wait(300);
n++;
}
ゴールにあるT字になったところを読み取った後、アームを上げ...
while(n==5){ //T字路なので音を鳴らさない
senkaileft
Wait(700);
n++;
}
S地点
while(n==4){
oto //音を鳴らす
kousatenzensin
}
P地点
while(n==3){ //T字路なので音は鳴らさない
kousatenmigi
}
R地点
while(n==2){
oto //音を鳴らす
kousatenzensin
}
Q地点
while(n==1){ //nが1の時
oto //音を鳴らす
kousatenzensin
PlaySound(SOUND_CLICK); //球をとるとき音を鳴らす
Wait(500);
t0 = CurrentTick(); //タイマーを使う
while(CurrentTick()-t0<6000){ //CurrentTick()とt...
if(SENSOR_1>42){ //センサーの値が42以上なら左に...
senkaileft
}
else if(SENSOR_1>40){ //センサーの値が40以上...
turnleft
}
else if(SENSOR_1>38){ //センサーの値が38以上なら...
gomae
}
else if(SENSOR_1>37){ //センサーの値が37以上な...
turnright
}
else{ //どれでもなければ右に旋回
senkairight
}
}
Off(OUT_BC);
Wait(500);
armdown //球をとる
}
Q地点 この地点ではうまくラインを読み込んでくれなかったの...
while(n==0){ //nの値が0の時十字路に到達
oto //音を鳴らす
kousatenzensin
P地点
}
}
}
*感想 [#u6f66e06]
今回の課題でライントレーサーのプログラムは簡単そうだなと...
終了行:
目次
#Contents
*課題2の内容 [#ifff3ad7]
#ref(2016b/Member/god22ila/Mission2/2016b-mission2.png,50...
今回の課題2の内容は上図のコースにライントレーサーを走らせ...
*ロボットの説明 [#r97767b5]
**本体について [#he30576e]
#ref(2016b/Member/god22ila/Mission2/IMG_hontai2.JPG,50%,...
横から見た写真 重心が後ろによっている
#ref(2016b/Member/god22ila/Mission2/IMG_usiro.JPG,50%,本...
後ろから見た写真
#ref(2016b/Member/god22ila/Mission2/IMG_sita.JPG,50%,本体)
下から見た写真
#ref(2016b/Member/god22ila/Mission2/IMG_hontai.jpg,50%,本...
前から見た写真
なるべくセンサーと紙の間の距離が近くになるようにするため...
構造上タイヤ間の距離が離れてしまったが特に問題はなかった。
**アームについて [#t2a53cfc]
アームはショベルカーのような構造にした。ピンポン球は丸く...
#ref(2016b/Member/god22ila/Mission2/IMG_arm1.jpg,50%,本体)
**ロボットの動き [#w37f0e79]
ロボットはラインの黒と紙の白い部分を交互に読み込みながら...
**交差点の判断 [#f9d7486f]
交差点を判断するにはタイマーを用いて黒と認識ししている時...
*プログラミングについて [#t3de1858]
#define turnright OnFwd(OUT_C,40);//右に曲がる
#define turnleft OnFwd(OUT_B,40);//左に曲がる
#define senkairight OnFwdSync(OUT_BC,40,-100);//右に旋回
#define senkaileft OnFwdSync(OUT_BC,40,100);//左に旋回
#define gomae OnFwdSync(OUT_BC,40,0);//前進
#define kousatenmigi OnFwd(OUT_C,40); Wait(500);OnFwdSyn...
#define kousatenzensin OnFwd(OUT_C,40);Wait(1000);OnFwd...
**アームの上げ下げ [#qdffd117]
#define armup OnFwd(OUT_A,25);Wait(700);Off(OUT_A);//ア...
#define armdown OnRev(OUT_A,25);Wait(700);Off(OUT_A);//...
**交差点上での音 [#s6e43fdc]
#define oto PlaySound(SOUND_CLICK);Wait(600);Wait(1000);...
交差点に差し掛かったことを確認するために音を鳴らす。T字路...
**センサーとタイマーの起動 [#eb19429c]
task main()
{
SetSensorLight(S1);//光センサー起動
int n=0; //nの値を決める。
long t0 = CurrentTick();//時間を測り始める直前の時刻をt...
armup//アームを上げる
まず、タイマーと光センサーを起動させる。
**各地点とnの値について [#de52b4f1]
自分のロボットが走るコースにはP,Q,Q,R,P,Sの順に交差点また...
while(n<7){
t0 = CurrentTick();
while(CurrentTick()-t0<600){ //CurrentTick()とt0の差が...
if(SENSOR_1>42){ //もしセンサーの値が42以上だったら左...
senkaileft
t0 = CurrentTick();
}
else if(SENSOR_1>40){ //もしセンサーの値が40以上なら...
turnleft
t0 = CurrentTick();
}
else if(SENSOR_1>38){ //もしセンサーの値が38以上...
gomae
t0 = CurrentTick();
}
else if(SENSOR_1>37){ //もしセンサーの値が37以上...
turnright
t0 = CurrentTick();
}
else{
senkairight //どれでもなければ右に旋回
}
}
Off(OUT_BC);
nの値が7以下で、CurrentTick()とt0の差が0.6秒以下の時それ...
while(n==6){ //T字路なので音を鳴らさない
kousatenzensin
Off(OUT_BC);
armup
OnFwdSync(OUT_BC,40,0);
Wait(300);
n++;
}
ゴールにあるT字になったところを読み取った後、アームを上げ...
while(n==5){ //T字路なので音を鳴らさない
senkaileft
Wait(700);
n++;
}
S地点
while(n==4){
oto //音を鳴らす
kousatenzensin
}
P地点
while(n==3){ //T字路なので音は鳴らさない
kousatenmigi
}
R地点
while(n==2){
oto //音を鳴らす
kousatenzensin
}
Q地点
while(n==1){ //nが1の時
oto //音を鳴らす
kousatenzensin
PlaySound(SOUND_CLICK); //球をとるとき音を鳴らす
Wait(500);
t0 = CurrentTick(); //タイマーを使う
while(CurrentTick()-t0<6000){ //CurrentTick()とt...
if(SENSOR_1>42){ //センサーの値が42以上なら左に...
senkaileft
}
else if(SENSOR_1>40){ //センサーの値が40以上...
turnleft
}
else if(SENSOR_1>38){ //センサーの値が38以上なら...
gomae
}
else if(SENSOR_1>37){ //センサーの値が37以上な...
turnright
}
else{ //どれでもなければ右に旋回
senkairight
}
}
Off(OUT_BC);
Wait(500);
armdown //球をとる
}
Q地点 この地点ではうまくラインを読み込んでくれなかったの...
while(n==0){ //nの値が0の時十字路に到達
oto //音を鳴らす
kousatenzensin
P地点
}
}
}
*感想 [#u6f66e06]
今回の課題でライントレーサーのプログラムは簡単そうだなと...
ページ名: