[[2011a]] #contents *メンバー [#qa7b35b8] hiros ソースコードの各行の頭にスペースくっつけるプログラム貼っておきます。誰か使いたい方添付ファイルからどうぞ。 :example ./wik < kadai3.rcx まえだ *マシン [#gcfccf4d] *プログラミング [#a6b246f7] **hiros [#ne5435bf] // hiros #define WaySensor SENSOR_2 #define BottomSensor SENSOR_1 #define TouchSensor SENSOR_3 #define RIGHT OUT_A #define LEFT OUT_C #define HAND OUT_B #define foundEdgeOrLine >40 #define DIS 300 void turnRight(){ OnFwd (LEFT); OnRev (RIGHT); } void turnLeft(){ OnFwd (RIGHT); OnRev (LEFT); } void goStraight(){ OnFwd (RIGHT+LEFT); } void go_back_and_continue(){ Off(RIGHT+LEFT); Wait (100); OnRev(RIGHT); OnRev(LEFT); Wait (DIS); turnRight(); Wait(60); Off(RIGHT+LEFT); } void take(){ OnRev (HAND); Wait(300); Off (HAND); } void release(){ OnFwd (HAND); Wait (400); Off (HAND); } task main (){ SetSensor (BottomSensor, SENSOR_LIGHT); SetSensor (WaySensor, SENSOR_LIGHT); SetSensor (TouchSensor, SENSOR_TOUCH); while (1) { goStraight(); if (TouchSensor){ Off(RIGHT+LEFT); PlaySound(SOUND_CLICK); Wait (100); goStraight(); Wait (10); Off(RIGHT+LEFT); take(); PlaySound(SOUND_DOWN); int max = 0; // destination /* while (1){ turnRight(); if (WaySensor < max) break; max = WaySensor; } */ ClearTimer(0); while (Timer(0) <= 60){ turnRight(); if (WaySensor > max){ max = WaySensor; } } while (WaySensor <= max) turnLeft(); Off (RIGHT+LEFT); Wait (100); goStraight(); while (WaySensor < 75) Wait (1); Off (RIGHT+LEFT); release(); // goback go_back_and_continue(); } } } **まえだ [#o24ca303] #define BLACKLINE 40 //閾値を定義 #define go_left OnFwd(OUT_C); //左に進む #define go_right OnFwd(OUT_A); //右に進む #define turn_right OnFwd(OUT_A);OnRev(OUT_C); //右に曲がる sub ball_out() //ボールを光のほうへ投げ出すプログラミング { OnFwd(OUT_B); Wait(150); Off(OUT_B); //ボールを離す OnRev(OUT_A+OUT_C); Wait(150); Off(OUT_A+OUT_C); //後ろに下がる OnRev(OUT_B); Wait(150); Off(OUT_B); //アームを下す OnFwd(OUT_A+OUT_C); Wait(150); Off(OUT_A+OUT_C); //下がった分進む OnFwd(OUT_B); Wait(150); Off(OUT_B); //アームを上げ、ボールを投げ出す } task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_TOUCH); while(true) { if(SENSOR_3==0) //ボールを探して黒線上を進むプログラミング { if(SENSOR_1<BLACKLINE) { go_left } else { go_right } } else //ボールを見つけた時のプログラミング { PlaySound(SOUND_UP); //確認のために音を流す Off(OUT_A+OUT_C); Wait(100); //動作の安定のために一旦動きを止める OnRev(OUT_B); Wait(150); Off(OUT_B); //ボールを掴む int max=0; //光の最大値を求めるプログラミング ClearTimer(0); while(FastTimer(0)<=60) { turn_right if(SENSOR_2>max) { max=SENSOR_2; } } while(SENSOR_2<=max) { turn_right } Off(OUT_A+OUT_C); Wait(100); //動作の安定のために止める PlaySound(SOUND_UP); //確認のための音声 ball_out(); //上記で定義したボールを投げ出すプログラミング PlaySound(SOUND_UP); //確認のための音声 } } } *考察 [#q3628657] **hiros [#j9c97717] **まえだ [#wddf0add] *感想 [#y553cf8d] **hiros [#j758eea6] **まえだ [#ad21c1f6] *コメント [#i345a6a2] コメントをお願いします。 - 今日の授業中に借りたテニスボール、借りたままになってしまいました。本当にごめんなさい。どうしたらいいでしょうか? -- [[A8右]] &new{2011-07-15 (金) 18:19:37}; #comment 今日: &counter(today); 昨日: &counter(yesterday); 全て: &counter(all);