2014a/Member/ryu-abe/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
**メンバー [#db3ff25c]
・ryu-abe(私) ・kowhich(課題1でのメンバー) ・kiyomizu(...
**課題の説明 [#l34c839f]
今回は課題1で使ったコースを2枚を使用し、1〜3まで番号づけ...
**ロボットの紹介 [#n03090c3]
今回のロボを作る際、NXT本体を他の部分が完成した後に取り...
一方kiyomizuは歯車を使う機構を作り上げた。この機構はモ...
しかし、NXT本体を全く考慮していなかった事によってロボに...
**プログラム [#jdcddda3]
定義の部分
#define THRESHOLD 50
#define turn_left0 OnFwd(OUT_B,30);
#define turn_left1 OnFwd(OUT_B,30);OnFwd(OUT_C,-30);
#define turn_right0 OnFwd(OUT_C,30);
#define turn_right1 OnFwd(OUT_C,30);OnFwd(OUT_B,-30);
#define STEP 1
#define nMAX 250
#define short_break Off(OUT_BC);Wait(1000);
#define cross_line;OnFwd(OUT_BC,40);Wait(300);short_brea...
サブルーチン
sub catch()
{
OnFwd(OUT_A,-20);Wait(1000);
OnFwd(OUT_A,-50);Wait(400);
Off(OUT_A);
}
sub release()
{
OnFwd(OUT_A,20);Wait(1000);
OnFwd(OUT_A,50);Wait(100);
Off(OUT_A);
}
以下が動作のプログラミング
task main()
{
SetSensorLight(S2);
SetSensorLight(S3);
int nOnline = 0;
int nPoint = 0;
OnFwdSync(OUT_BC,60,0);Wait(2000);Off(OUT_BC);
OnFwdSync(OUT_BC,75,-100);Wait(450);Off(OUT_BC);Wait...
...
catch();
OnFwdSync(OUT_BC,60,0);Wait(700);
OnFwdSync(OUT_BC,60,-100);Wait(500);Off(OUT_BC);Wait...
long t0 = CurrentTick(); ...
while (CurrentTick() - t0 < 3000) { ...
if (SENSOR_3 > THRESHOLD +2) {
OnFwd(OUT_B,40);
} else {
Off(OUT_BC);
}
Wait(STEP);
}
while (nPoint <= 1) { ...
while (nOnline < nMAX){
if (SENSOR_3 < THRESHOLD -10) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD -5) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD +2) {
OnFwdSync(OUT_BC,30,0);
} else if (SENSOR_3 < THRESHOLD +8) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_left1; Wait(nMAX*STEP);
cross_line;
nPoint++;
nOnline=0;
}
while (nPoint == 2) {
OnFwdSync(OUT_BC,30,0);Wait(1500);Off(OUT_BC);Wait...
OnFwdSync(OUT_BC,-30,0);Wait(500);Off(OUT_BC);
release(); ...
OnFwd(OUT_C,-30);Wait(200);
OnFwdSync(OUT_BC,-60,0);Wait(900);Off(OUT_BC);
catch();
OnFwdSync(OUT_BC,75,-100);Wait(900);Off(OUT_BC);
nPoint++;
}
long t1 = CurrentTick(); ...
while (CurrentTick() - t1 < 3000) { ...
if (SENSOR_3 > THRESHOLD +2) {
OnFwd(OUT_C,40);
} else {
Off(OUT_BC);
}
Wait(STEP);
}
while (nPoint <= 6) { ...
while (nOnline < nMAX + 50){
if (SENSOR_3 < THRESHOLD -10) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD -5) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD +2) {
OnFwdSync(OUT_BC,30,0);
} else if (SENSOR_3 < THRESHOLD +8) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_right1; Wait(nMAX*STEP);
cross_line;
nPoint++;
nOnline=0;
}
while (nPoint == 7) {
OnFwdSync(OUT_BC,75,100);Wait(300);Off(OUT_BC);Wai...
OnFwdSync(OUT_BC,-60,0);Wait(900);Off(OUT_BC);
OnFwdSync(OUT_BC,75,100);Wait(200);Off(OUT_BC);Wai...
release(); ...
OnFwdSync(OUT_BC,60,0);Wait(1000);Off(OUT_BC);Wait...
catch();
nPoint++;
OnFwdSync(OUT_BC,60,0);Wait(500);Off(OUT_BC);Wait(...
}
}
Wait(STEP);
}
long t2 = CurrentTick(); ...
while (CurrentTick() - t2 < 5000) {
if (SENSOR_3 > THRESHOLD +2) { ...
OnFwd(OUT_B,-20);OnFwd(OUT_C,50);
} else {
Off(OUT_BC);
}
Wait(STEP);
}
while (nPoint == 8) { ...
while (nOnline < nMAX){
if (SENSOR_3 < THRESHOLD -10) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD -5) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD +2) {
OnFwdSync(OUT_BC,30,0);
} else if (SENSOR_3 < THRESHOLD +8) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_right1; Wait(nMAX*STEP + 600);
cross_line;
OnFwd(OUT_BC,30);Wait(200);
nPoint++;
nOnline=0;
}
long t3 = CurrentTick(); ...
while (CurrentTick() - t3 < 18000) { ...
if (SENSOR_3 < THRESHOLD -10) {
turn_right1;
} else {
if (SENSOR_3 < THRESHOLD -5) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD +2) {
OnFwd(OUT_BC,30);
} else if (SENSOR_3 < THRESHOLD +8) {
turn_left0;
} else {
turn_left1;
}
Wait(STEP);
}
}
OnFwdSync(OUT_BC,75,-100);Wait(1000);Off(OUT_BC);Wai...
while (nPoint == 9) {
while (nOnline < nMAX){
if (SENSOR_3 < THRESHOLD -10) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD -5) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD +2) {
OnFwdSync(OUT_BC,30,0);
} else if (SENSOR_3 < THRESHOLD +8) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_right1; Wait(nMAX*STEP);
cross_line;
nPoint++;
nOnline=0;
}
while (nPoint == 10) {
OnFwdSync(OUT_BC,30,0);Wait(800);Off(OUT_BC);Wait(...
OnFwdSync(OUT_BC,-30,0);Wait(600);Off(OUT_BC);Wait...
release(); ...
nPoint++;
}
while (nPoint == 11) {
OnFwdSync(OUT_BC,-60,0);Wait(1200);Off(OUT_BC);
OnFwdSync(OUT_BC,75,-100);Wait(500);Off(OUT_BC);Wa...
OnFwdSync(OUT_BC,60,0);Wait(1800);Off(OUT_BC);
catch();
nPoint++;
}
while (nPoint == 12) {
OnFwdSync(OUT_BC,75,-100);Wait(1000);Off(OUT_BC);W...
OnFwdSync(OUT_BC,60,0);Wait(2500);Off(OUT_BC);
OnFwdSync(OUT_BC,-30,0);Wait(600);Off(OUT_BC);Wait...
release(); ...
nPoint++;
}
}
**感想・反省 [#j137b16d]
感想としては課題1では別行動であったメンバーとも一緒に出...
終了行:
目次
#contents
**メンバー [#db3ff25c]
・ryu-abe(私) ・kowhich(課題1でのメンバー) ・kiyomizu(...
**課題の説明 [#l34c839f]
今回は課題1で使ったコースを2枚を使用し、1〜3まで番号づけ...
**ロボットの紹介 [#n03090c3]
今回のロボを作る際、NXT本体を他の部分が完成した後に取り...
一方kiyomizuは歯車を使う機構を作り上げた。この機構はモ...
しかし、NXT本体を全く考慮していなかった事によってロボに...
**プログラム [#jdcddda3]
定義の部分
#define THRESHOLD 50
#define turn_left0 OnFwd(OUT_B,30);
#define turn_left1 OnFwd(OUT_B,30);OnFwd(OUT_C,-30);
#define turn_right0 OnFwd(OUT_C,30);
#define turn_right1 OnFwd(OUT_C,30);OnFwd(OUT_B,-30);
#define STEP 1
#define nMAX 250
#define short_break Off(OUT_BC);Wait(1000);
#define cross_line;OnFwd(OUT_BC,40);Wait(300);short_brea...
サブルーチン
sub catch()
{
OnFwd(OUT_A,-20);Wait(1000);
OnFwd(OUT_A,-50);Wait(400);
Off(OUT_A);
}
sub release()
{
OnFwd(OUT_A,20);Wait(1000);
OnFwd(OUT_A,50);Wait(100);
Off(OUT_A);
}
以下が動作のプログラミング
task main()
{
SetSensorLight(S2);
SetSensorLight(S3);
int nOnline = 0;
int nPoint = 0;
OnFwdSync(OUT_BC,60,0);Wait(2000);Off(OUT_BC);
OnFwdSync(OUT_BC,75,-100);Wait(450);Off(OUT_BC);Wait...
...
catch();
OnFwdSync(OUT_BC,60,0);Wait(700);
OnFwdSync(OUT_BC,60,-100);Wait(500);Off(OUT_BC);Wait...
long t0 = CurrentTick(); ...
while (CurrentTick() - t0 < 3000) { ...
if (SENSOR_3 > THRESHOLD +2) {
OnFwd(OUT_B,40);
} else {
Off(OUT_BC);
}
Wait(STEP);
}
while (nPoint <= 1) { ...
while (nOnline < nMAX){
if (SENSOR_3 < THRESHOLD -10) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD -5) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD +2) {
OnFwdSync(OUT_BC,30,0);
} else if (SENSOR_3 < THRESHOLD +8) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_left1; Wait(nMAX*STEP);
cross_line;
nPoint++;
nOnline=0;
}
while (nPoint == 2) {
OnFwdSync(OUT_BC,30,0);Wait(1500);Off(OUT_BC);Wait...
OnFwdSync(OUT_BC,-30,0);Wait(500);Off(OUT_BC);
release(); ...
OnFwd(OUT_C,-30);Wait(200);
OnFwdSync(OUT_BC,-60,0);Wait(900);Off(OUT_BC);
catch();
OnFwdSync(OUT_BC,75,-100);Wait(900);Off(OUT_BC);
nPoint++;
}
long t1 = CurrentTick(); ...
while (CurrentTick() - t1 < 3000) { ...
if (SENSOR_3 > THRESHOLD +2) {
OnFwd(OUT_C,40);
} else {
Off(OUT_BC);
}
Wait(STEP);
}
while (nPoint <= 6) { ...
while (nOnline < nMAX + 50){
if (SENSOR_3 < THRESHOLD -10) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD -5) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD +2) {
OnFwdSync(OUT_BC,30,0);
} else if (SENSOR_3 < THRESHOLD +8) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_right1; Wait(nMAX*STEP);
cross_line;
nPoint++;
nOnline=0;
}
while (nPoint == 7) {
OnFwdSync(OUT_BC,75,100);Wait(300);Off(OUT_BC);Wai...
OnFwdSync(OUT_BC,-60,0);Wait(900);Off(OUT_BC);
OnFwdSync(OUT_BC,75,100);Wait(200);Off(OUT_BC);Wai...
release(); ...
OnFwdSync(OUT_BC,60,0);Wait(1000);Off(OUT_BC);Wait...
catch();
nPoint++;
OnFwdSync(OUT_BC,60,0);Wait(500);Off(OUT_BC);Wait(...
}
}
Wait(STEP);
}
long t2 = CurrentTick(); ...
while (CurrentTick() - t2 < 5000) {
if (SENSOR_3 > THRESHOLD +2) { ...
OnFwd(OUT_B,-20);OnFwd(OUT_C,50);
} else {
Off(OUT_BC);
}
Wait(STEP);
}
while (nPoint == 8) { ...
while (nOnline < nMAX){
if (SENSOR_3 < THRESHOLD -10) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD -5) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD +2) {
OnFwdSync(OUT_BC,30,0);
} else if (SENSOR_3 < THRESHOLD +8) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_right1; Wait(nMAX*STEP + 600);
cross_line;
OnFwd(OUT_BC,30);Wait(200);
nPoint++;
nOnline=0;
}
long t3 = CurrentTick(); ...
while (CurrentTick() - t3 < 18000) { ...
if (SENSOR_3 < THRESHOLD -10) {
turn_right1;
} else {
if (SENSOR_3 < THRESHOLD -5) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD +2) {
OnFwd(OUT_BC,30);
} else if (SENSOR_3 < THRESHOLD +8) {
turn_left0;
} else {
turn_left1;
}
Wait(STEP);
}
}
OnFwdSync(OUT_BC,75,-100);Wait(1000);Off(OUT_BC);Wai...
while (nPoint == 9) {
while (nOnline < nMAX){
if (SENSOR_3 < THRESHOLD -10) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD -5) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD +2) {
OnFwdSync(OUT_BC,30,0);
} else if (SENSOR_3 < THRESHOLD +8) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_right1; Wait(nMAX*STEP);
cross_line;
nPoint++;
nOnline=0;
}
while (nPoint == 10) {
OnFwdSync(OUT_BC,30,0);Wait(800);Off(OUT_BC);Wait(...
OnFwdSync(OUT_BC,-30,0);Wait(600);Off(OUT_BC);Wait...
release(); ...
nPoint++;
}
while (nPoint == 11) {
OnFwdSync(OUT_BC,-60,0);Wait(1200);Off(OUT_BC);
OnFwdSync(OUT_BC,75,-100);Wait(500);Off(OUT_BC);Wa...
OnFwdSync(OUT_BC,60,0);Wait(1800);Off(OUT_BC);
catch();
nPoint++;
}
while (nPoint == 12) {
OnFwdSync(OUT_BC,75,-100);Wait(1000);Off(OUT_BC);W...
OnFwdSync(OUT_BC,60,0);Wait(2500);Off(OUT_BC);
OnFwdSync(OUT_BC,-30,0);Wait(600);Off(OUT_BC);Wait...
release(); ...
nPoint++;
}
}
**感想・反省 [#j137b16d]
感想としては課題1では別行動であったメンバーとも一緒に出...
ページ名: