[[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);

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS