[[2016a/Member]]

*課題 [#x4f0f64c]

*プログラム [#ldb24048]
本体
 #define SPEED 50                              //スピード50
 #define go_forward OnFwd(OUT_BC,SPEED);       //前進
 #define CONN 1     //スレーブを表している
 #define SIGNALON 21  //腕を動かすためにマスターがスレーブに送る信号
 #define SIGNALOFF 22   //腕を動かし終わったことをスレーブがマスターに送る信号
 #define SIGNALON2 31
 #define SIGNALOFF2 32
 #define turn_leftC  OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED);  //左旋回
 #define turn_rightC OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED);  //右折

 task main()
 {
	int msg  //MAILBOXに来る信号をmsgと定義する
	
 	
  	SetSensorLowspeed(S1);     //端子1に超音波センサ               
	go_forward;  //前進
	until(SensorUS(S1) <= 9); //センサの半径9cmに紙コップが入ったら停止
	Off(OUT_BC);
  	SendRemoteNumber(CONN,MAILBOX1,SIGNALON ); //信号を送る	
  while (true){
		ReceiveRemoteNumber(MAILBOX2,true,msg); //msgを受け取っている間
               
                if (msg == SIGNALOFF ){  //信号を受け取ったら左旋回する
    			turn_leftC;
   			Wait(1600);
        		Off(OUT_BC);
	
	go_forward;  //前進
	Wait(1000);
	Off(OUT_BC);
	
	SendRemoteNumber(CONN,MAILBOX1,SIGNALON2 ); //腕を動かすために信号を送る
	
		if (msg == SIGNALOFF2 ){   //信号を受け取ったら左旋回し、停止
			
    			turn_leftC;
   			Wait(1000);
        		Off(OUT_BC);
 }else {     //それ以外では停止したまま
  Off(OUT_BC);
 }
 }
 }
 }



 #define SIGNALON 21   //腕を動かすためにマスターがスレーブに送る信号
 #define SIGNALOFF 22   //腕を動かし終わったことをスレーブがマスターに送る信号
 #define LIFT_up OnRev(OUT_C,35);Wait(520);Off(OUT_BC);   //腕を上げる
 #define LIFT_down OnFwd(OUT_C,20);Wait(550);Off(OUT_BC);   //腕を下ろす
 #define CATCH OnFwd(OUT_B,60);Wait(2000);Off(OUT_B);    //紙コップを持つ
 #define RELEASE OnFwd(OUT_B,50);Wait(1500);Off(OUT_B);   //紙コップを離す
 #define CONN 0    //マスターとつながっている
 #define SIGNALON2 31
 #define SIGNALOFF2 32
 void ude()   //サブルーチン
  {
	LIFT_down;
	CATCH;
	LIFT_up;
	CATCH;
	Off(OUT_B);
   }
 task main ()

    int msg;
  while (true) {
    ReceiveRemoteNumber(MAILBOX1,true,msg);    //msgを受けている間
    if (msg == SIGNALON) {  //信号を受け取ったら紙コップを持ち上げる
     ude();
    SendResponseNumber(MAILBOX2,SIGNALOFF);    //本体に次の行動をするように信号を送る
    } 
	if (msg == SIGNALON2) {                   //信号を受け取ったら紙コップを離す
     RELEASE;
    SendResponseNumber(MAILBOX2,SIGNALOFF2);   //本体に次の行動をするように信号を送る
    } else {                   //どちらでもなかったら動かない
     Off(OUT_BC);
	
    }
	
 	
  }
 }


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