2018a/Member/ngafy/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題2[#p5eb685a]
指定の道をあらかじめ模造紙に描き、第1コース・第2コースそ...
*コース[#l49cfc9f]
第2コース
#ref(2018a-mission2.png)
1Aをスタート
2Bを右折
3Jで一時停止の後、Yの空き缶をキャッチしてJに戻る
4JからKに向かい、Kを直進
5Lを直進
6Iを左折
7Hで一時停止の後、左折
8Gで一時停止の後、右折
9Fで一時停止の後、右折
10Eを直進
11Dで一時停止の後、空き缶をXに置いてDに戻り、Cに向かう
12Cで一時停止の後、直進
13Bを直進
14Aで停止
(一時停止の指定がある場所は、1秒間停止すること)
*ロボットの説明[#fbbc27ea]
**車輪部分[#k29f6177]
課題1と同様、シンプルな3輪構造で、前輪が2輪、後輪が1輪と...
**センサーライト部分 [#zcdc4beb]
2つの車輪ほぼ真ん中前方に、確実に明るさを読み取れるよう...
#ref(IMG_1298.JPG)
**アーム[#y0f7317f]
#ref(IMG_1301.JPG)
#ref(アーム.png)
モータBに歯車を直接取り付け、
アームの動作は缶をつかむ動作、缶の方向を変える動作、缶を...
***缶をつかむ動作 [#u0daf4ae]
モータBを稼働させるだけでは先にアームの方向が変わってしま...
#ref(IMG_1300neo.png)
***缶の方向を変える動作 [#ce6f913e]
缶をつかむ動作を終えると缶をつかむ動きが固定され、缶の方...
***缶を離す動作 [#kefdb2d7]
缶の方向が変わると赤で囲まれた部分が回転し、それとともに...
#ref(IMG_1299ex.png)
*交差点の感知 [#vb1866bb]
今回、私は関数DAI(DAIに深い意味はない)を使って交差点を感...
#ref(白黒数値2.png)
#define LEFT_LINE if(DEEPWHITE){RIGHT DAI -= 3;} else if...
#define RIGHT_LINE if(DEEPWHITE){LEFT DAI -= 3;} else if...
プログラムのようにその時位置している範囲に従ってそれ相応...
右[#gabb9e62]
#define RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(1);Of...
少し右[#f2a3eb93]
#define BIT_RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,10);Wait(1...
左[#yf200910]
#define LEFT OnFwd(OUT_C,30);OnRev(OUT_A,30);Wait(1);Off...
少し左[#m9a0ad8a]
#define BIT_LEFT OnFwd(OUT_C,30);OnRev(OUT_A,10);Wait(1)...
直線方向[#d825c59f]
#define STRAGHT OnFwd(OUT_AC,30);Wait(1);Off(OUT_AC);
各方向に1000分の1秒進み、その時間毎に今存在している範囲を...
#define KANSU DAI < 150
ライントレース中は4つの範囲を行き来するのでほぼ±0に保た...
また、関数DAIを正確に測るためにライントレース前には"DAI *...
*交差点からの右折等 [#nb589184]
(例)右折
#ref(右折1.png)
#ref(右折2.png)
#ref(右折3.png)
交差点を感知し、停止する。(図A)
85°くらい回転する。(図B)
while(BLACK){OnFwd(OUT_AC,20);}
地面がBLACKになるまで直進する。(図C)
ライントレースする。
*プログラミングにあたっての準備[#heeafd24]
**色分けし、それに伴う方向に動くプログラム [#u32bece1]
白
#define DEEPWHITE SENSOR_1 > 48
少し白 [#g54731d9]
#define WHITE SENSOR_1 > 44
少し黒ece9d1]
#define BLACK SENSOR_1 < 40
黒 [#hdece4ff]
#define DEEPBLACK SENSOR_1 < 36
右[#gabb9e62]
#define RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(1);Of...
少し右[#f2a3eb93]
#define BIT_RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,10);Wait(1...
左[#yf200910]
#define LEFT OnFwd(OUT_C,30);OnRev(OUT_A,30);Wait(1);Off...
少し左[#m9a0ad8a]
#define BIT_LEFT OnFwd(OUT_C,30);OnRev(OUT_A,10);Wait(1)...
直線方向[#d825c59f]
#define STRAGHT OnFwd(OUT_AC,30);Wait(1);Off(OUT_AC);
#ref(白黒判別.png)
※上のプログラムを組み合わせて図のように動作するようにした。
#define LEFT_LINE if(DEEPWHITE){RIGHT DAI -= 3;} else if...
#define RIGHT_LINE if(DEEPWHITE){LEFT DAI -= 3;} else if...
#define KANSU DAI < 150
それぞれ左・右のライントレース時に使うプログラム ...
#br
#define OFF Off(OUT_AC);
#br
#define WAIT Wait(1000);
車輪を止めるプログラムと停止するプログラム
#br
#define CATCH OnFwd(OUT_AC,20);Wait(300);OFF OnFwd(OUT_B...
#br
#define RELEASE OnFwd(OUT_B,30);Wait(1000);Off(OUT_B);W...
それぞれアームを閉開するプログラム
#br
#define SIMPLE_RIGHT OnFwd(OUT_A,40);OnRev(OUT_C,40);
#br
#define SIMPLE_LEFT OnFwd(OUT_C,40);OnRev(OUT_A,40);
それぞれ右・左にその場で旋回するプログラム
#br
#define GO_STRAIGHT OnFwd(OUT_A,40);OnFwd(OUT_C,40);Wait...
#define MOVE_RIGHT SIMPLE_RIGHT Wait(750); OFF
#br
#define GO_STRAIGHT OnFwd(OUT_A,40);OnFwd(OUT_C,40);Wait...
#define MOVE_LEFT SIMPLE_LEFT Wait(750); OFF
それぞれ交差点で右・左に曲がるプログラム
*プログラム本編 [#d73f6990]
task main()
{
SetSensorLight(S1);
int DAI=0;
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
PlaySound(SOUND_DOWN); //音を鳴らす
GO_STRAIGHT //少し直進
MOVE_RIGHT //右に85°曲がる
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
PlaySound(SOUND_UP); //音を鳴らす
WAIT //停止
CATCH //掴む
OnFwd(OUT_B,10); //掴み続ける
GO_STRAIGHT //少し直進
MOVE_LEFT //左に85°曲がる
while(BLACK){
OnFwd(OUT_AC,20);
}
OFF //黒になるまで直進
repeat(2){
while(KANSU){
LEFT_LINE
}
OFF
DAI *= 0; //左ライ...
SIMPLE_RIGHT
Wait(50);
OFF //微調整
while(BLACK){
OnFwd(OUT_AC,30);
}
OFF //黒にな...
}
while(KANSU){
LEFT_LINE
}
OFF //左ライントレース
PlaySound(SOUND_UP); //音を鳴らす
WAIT //停止
DAI *= 0;
OnFwd(OUT_AC,30);
Wait(50);
OFF
SIMPLE_LEFT
Wait(450);
OFF //微調整
while(KANSU){
LEFT_LINE
}
OFF
DAI *= 0; //左ライントレース
while(BLACK){
OnFwd(OUT_A,30);OnFwd(OUT_C,30);
}
OFF //黒になるまで直進
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
while(BLACK){
OnFwd(OUT_A,30);OnFwd(OUT_C,30);
}
OFF //黒になるまで直進
while(KANSU){
LEFT_LINE
}
OFF
DAI *= 0; //左ライントレース
GO_STRAIGHT //少し直進
MOVE_LEFT //左に85°曲がる
while(KANSU){
LEFT_LINE
}
OFF
DAI *= 0; //左ライントレース
WAIT //停止
GO_STRAIGHT //少し直進
MOVE_RIGHT //右に85°曲がる
while(BLACK){
OnFwd(OUT_A,30);OnFwd(OUT_C,30);
}
OFF //黒になるまで直進
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
WAIT //停止
PlaySound(SOUND_UP); //音を鳴らす
GO_STRAIGHT //少し直進
MOVE_RIGHT //右に85°曲がる
while(KANSU){
RIGHT_LINE
}
OFF //右ライントレース
SIMPLE_RIGHT
Wait(50);
OFF //微調整
while(BLACK){
OnFwd(OUT_AC,30);
}
OFF //黒になるまで直進
while(KANSU){
RIGHT_LINE
}
OFF //右ライントレース
Off(OUT_B); //掴み続けることをやめる
WAIT //停止
RELEASE //離す
OnFwd(OUT_AC,30);
Wait(80);
OFF
SIMPLE_RIGHT
Wait(500);
OFF //微調整
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
GO_STRAIGHT //少し直進
MOVE_RIGHT //右に85°曲がる
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
WAIT //停止
PlaySound(SOUND_UP); //音を鳴らす
while(BLACK){
OnFwd(OUT_A,30);OnFwd(OUT_C,29);
}
OFF //黒になるまで直進
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
PlaySound(SOUND_FAST_UP); //音を鳴らす
}
*課題2を終えて [#oe801b50]
**苦労した点 [#p3e849d8]
作成の過程では、センサーライトやアームを所定の位置に設置...
**工夫した点 [#u95b7b61]
上では苦労したと書いたが、やはり、あらゆる工夫を取り込ん...
終了行:
#contents
*課題2[#p5eb685a]
指定の道をあらかじめ模造紙に描き、第1コース・第2コースそ...
*コース[#l49cfc9f]
第2コース
#ref(2018a-mission2.png)
1Aをスタート
2Bを右折
3Jで一時停止の後、Yの空き缶をキャッチしてJに戻る
4JからKに向かい、Kを直進
5Lを直進
6Iを左折
7Hで一時停止の後、左折
8Gで一時停止の後、右折
9Fで一時停止の後、右折
10Eを直進
11Dで一時停止の後、空き缶をXに置いてDに戻り、Cに向かう
12Cで一時停止の後、直進
13Bを直進
14Aで停止
(一時停止の指定がある場所は、1秒間停止すること)
*ロボットの説明[#fbbc27ea]
**車輪部分[#k29f6177]
課題1と同様、シンプルな3輪構造で、前輪が2輪、後輪が1輪と...
**センサーライト部分 [#zcdc4beb]
2つの車輪ほぼ真ん中前方に、確実に明るさを読み取れるよう...
#ref(IMG_1298.JPG)
**アーム[#y0f7317f]
#ref(IMG_1301.JPG)
#ref(アーム.png)
モータBに歯車を直接取り付け、
アームの動作は缶をつかむ動作、缶の方向を変える動作、缶を...
***缶をつかむ動作 [#u0daf4ae]
モータBを稼働させるだけでは先にアームの方向が変わってしま...
#ref(IMG_1300neo.png)
***缶の方向を変える動作 [#ce6f913e]
缶をつかむ動作を終えると缶をつかむ動きが固定され、缶の方...
***缶を離す動作 [#kefdb2d7]
缶の方向が変わると赤で囲まれた部分が回転し、それとともに...
#ref(IMG_1299ex.png)
*交差点の感知 [#vb1866bb]
今回、私は関数DAI(DAIに深い意味はない)を使って交差点を感...
#ref(白黒数値2.png)
#define LEFT_LINE if(DEEPWHITE){RIGHT DAI -= 3;} else if...
#define RIGHT_LINE if(DEEPWHITE){LEFT DAI -= 3;} else if...
プログラムのようにその時位置している範囲に従ってそれ相応...
右[#gabb9e62]
#define RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(1);Of...
少し右[#f2a3eb93]
#define BIT_RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,10);Wait(1...
左[#yf200910]
#define LEFT OnFwd(OUT_C,30);OnRev(OUT_A,30);Wait(1);Off...
少し左[#m9a0ad8a]
#define BIT_LEFT OnFwd(OUT_C,30);OnRev(OUT_A,10);Wait(1)...
直線方向[#d825c59f]
#define STRAGHT OnFwd(OUT_AC,30);Wait(1);Off(OUT_AC);
各方向に1000分の1秒進み、その時間毎に今存在している範囲を...
#define KANSU DAI < 150
ライントレース中は4つの範囲を行き来するのでほぼ±0に保た...
また、関数DAIを正確に測るためにライントレース前には"DAI *...
*交差点からの右折等 [#nb589184]
(例)右折
#ref(右折1.png)
#ref(右折2.png)
#ref(右折3.png)
交差点を感知し、停止する。(図A)
85°くらい回転する。(図B)
while(BLACK){OnFwd(OUT_AC,20);}
地面がBLACKになるまで直進する。(図C)
ライントレースする。
*プログラミングにあたっての準備[#heeafd24]
**色分けし、それに伴う方向に動くプログラム [#u32bece1]
白
#define DEEPWHITE SENSOR_1 > 48
少し白 [#g54731d9]
#define WHITE SENSOR_1 > 44
少し黒ece9d1]
#define BLACK SENSOR_1 < 40
黒 [#hdece4ff]
#define DEEPBLACK SENSOR_1 < 36
右[#gabb9e62]
#define RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(1);Of...
少し右[#f2a3eb93]
#define BIT_RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,10);Wait(1...
左[#yf200910]
#define LEFT OnFwd(OUT_C,30);OnRev(OUT_A,30);Wait(1);Off...
少し左[#m9a0ad8a]
#define BIT_LEFT OnFwd(OUT_C,30);OnRev(OUT_A,10);Wait(1)...
直線方向[#d825c59f]
#define STRAGHT OnFwd(OUT_AC,30);Wait(1);Off(OUT_AC);
#ref(白黒判別.png)
※上のプログラムを組み合わせて図のように動作するようにした。
#define LEFT_LINE if(DEEPWHITE){RIGHT DAI -= 3;} else if...
#define RIGHT_LINE if(DEEPWHITE){LEFT DAI -= 3;} else if...
#define KANSU DAI < 150
それぞれ左・右のライントレース時に使うプログラム ...
#br
#define OFF Off(OUT_AC);
#br
#define WAIT Wait(1000);
車輪を止めるプログラムと停止するプログラム
#br
#define CATCH OnFwd(OUT_AC,20);Wait(300);OFF OnFwd(OUT_B...
#br
#define RELEASE OnFwd(OUT_B,30);Wait(1000);Off(OUT_B);W...
それぞれアームを閉開するプログラム
#br
#define SIMPLE_RIGHT OnFwd(OUT_A,40);OnRev(OUT_C,40);
#br
#define SIMPLE_LEFT OnFwd(OUT_C,40);OnRev(OUT_A,40);
それぞれ右・左にその場で旋回するプログラム
#br
#define GO_STRAIGHT OnFwd(OUT_A,40);OnFwd(OUT_C,40);Wait...
#define MOVE_RIGHT SIMPLE_RIGHT Wait(750); OFF
#br
#define GO_STRAIGHT OnFwd(OUT_A,40);OnFwd(OUT_C,40);Wait...
#define MOVE_LEFT SIMPLE_LEFT Wait(750); OFF
それぞれ交差点で右・左に曲がるプログラム
*プログラム本編 [#d73f6990]
task main()
{
SetSensorLight(S1);
int DAI=0;
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
PlaySound(SOUND_DOWN); //音を鳴らす
GO_STRAIGHT //少し直進
MOVE_RIGHT //右に85°曲がる
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
PlaySound(SOUND_UP); //音を鳴らす
WAIT //停止
CATCH //掴む
OnFwd(OUT_B,10); //掴み続ける
GO_STRAIGHT //少し直進
MOVE_LEFT //左に85°曲がる
while(BLACK){
OnFwd(OUT_AC,20);
}
OFF //黒になるまで直進
repeat(2){
while(KANSU){
LEFT_LINE
}
OFF
DAI *= 0; //左ライ...
SIMPLE_RIGHT
Wait(50);
OFF //微調整
while(BLACK){
OnFwd(OUT_AC,30);
}
OFF //黒にな...
}
while(KANSU){
LEFT_LINE
}
OFF //左ライントレース
PlaySound(SOUND_UP); //音を鳴らす
WAIT //停止
DAI *= 0;
OnFwd(OUT_AC,30);
Wait(50);
OFF
SIMPLE_LEFT
Wait(450);
OFF //微調整
while(KANSU){
LEFT_LINE
}
OFF
DAI *= 0; //左ライントレース
while(BLACK){
OnFwd(OUT_A,30);OnFwd(OUT_C,30);
}
OFF //黒になるまで直進
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
while(BLACK){
OnFwd(OUT_A,30);OnFwd(OUT_C,30);
}
OFF //黒になるまで直進
while(KANSU){
LEFT_LINE
}
OFF
DAI *= 0; //左ライントレース
GO_STRAIGHT //少し直進
MOVE_LEFT //左に85°曲がる
while(KANSU){
LEFT_LINE
}
OFF
DAI *= 0; //左ライントレース
WAIT //停止
GO_STRAIGHT //少し直進
MOVE_RIGHT //右に85°曲がる
while(BLACK){
OnFwd(OUT_A,30);OnFwd(OUT_C,30);
}
OFF //黒になるまで直進
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
WAIT //停止
PlaySound(SOUND_UP); //音を鳴らす
GO_STRAIGHT //少し直進
MOVE_RIGHT //右に85°曲がる
while(KANSU){
RIGHT_LINE
}
OFF //右ライントレース
SIMPLE_RIGHT
Wait(50);
OFF //微調整
while(BLACK){
OnFwd(OUT_AC,30);
}
OFF //黒になるまで直進
while(KANSU){
RIGHT_LINE
}
OFF //右ライントレース
Off(OUT_B); //掴み続けることをやめる
WAIT //停止
RELEASE //離す
OnFwd(OUT_AC,30);
Wait(80);
OFF
SIMPLE_RIGHT
Wait(500);
OFF //微調整
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
GO_STRAIGHT //少し直進
MOVE_RIGHT //右に85°曲がる
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
WAIT //停止
PlaySound(SOUND_UP); //音を鳴らす
while(BLACK){
OnFwd(OUT_A,30);OnFwd(OUT_C,29);
}
OFF //黒になるまで直進
while(KANSU){
RIGHT_LINE
}
OFF
DAI *= 0; //右ライントレース
PlaySound(SOUND_FAST_UP); //音を鳴らす
}
*課題2を終えて [#oe801b50]
**苦労した点 [#p3e849d8]
作成の過程では、センサーライトやアームを所定の位置に設置...
**工夫した点 [#u95b7b61]
上では苦労したと書いたが、やはり、あらゆる工夫を取り込ん...
ページ名: