*ライントレース版プログラム [#a5d2ed9b]
 int repeat_time; 
 
*ライントレース版プログラム  //製作者 少年[#a5d2ed9b]
結局開発が追いつかず、完成に至らなかったプログラム
 int nikai=2;
 task main()
 {
 SetSensor(SENSOR_2,SENSOR_TOUCH);
 Wait(100);
 OnFwd(OUT_B);
 ClearMessage();
 until(Message()!=0);
 if(Message()==3)
 SetSensor(SENSOR_1,SENSOR_LIGHT);/センサー1を光センサーと   定義
 SetSensor(SENSOR_2,SENSOR_TOUCH);/センサー2をタッチセン サーと定義
 SetSensor(SENSOR_3,SENSOR_LIGHT);/センサ−3を光センサーと定義
 Wait(100); 
 OnFwd(OUT_B);/スイッチを入れて1秒後に受け身ロボット発動
 ClearMessage();/メッセージリセット
 until(Message()!=0);/0以外のメッセージが来るまで待機
 if(Message()==3)/メッセージ3を受け取ると
  {
  Off(OUT_B);
  }
 OnFwd(OUT_A+OUT_C);
 Wait(200);
 OnRev(OUT_C);
 Wait(35);
 OnFwd(OUT_A);
 Wait(100);
 OnRev(OUT_C);
 Wait(35); 
 OnFwd(OUT_A+OUT_C);
 Wait(200);
 SendMessage(1);
 Wait(100);
 Off(OUT_A+OUT_C);
 until(SENSOR_2!=0);
 if(SENSOR_2==1);
  Off(OUT_B);/受け身ロボット停止
  }  
 while(nikai==2||1)/
  {
  SendMessage(4);
  ClearTimer(0);/タイマースタート
  if(FastTimer(0)<300);/3秒たつまでの間に
   {
   if(SENSOR_1&&SENSOR_3>40)/センサ−1とセンサ−3がライン 上になければ
    {
    OnFwd(OUT_A+OUT_C);/運搬ロボット前進
    }
   }
  if(FastTimer(0)>300);/3秒経過後
   {
  if(SENSOR_1&&SENSOR_3>40)/センサ−1とセンサ−3がライン上になければ
    {
    OnFwd(OUT_A+OUT_C);/運搬ロボット前進
    } 
  if(SENSOR_1&&SENSOR_3<40)/センサ−1とセンサ−3がともに
 ライン上に乗っていれば
    {
    OnRev(OUT_C);/
    Wait(90);
    OnFwd(OUT_C);/右に回転して前進
    nikai-1;/
    }
   }
  }
 ClearMessage();
 until(Message()!=0);
 if(Message()==2)
 OnFwd(OUT_A+OUT_C);/前進
 Wait(300);/
 SendMessage(1);/メッセージ1送信
 Wait(100);/
 Off(OUT_A+OUT_C);/運搬ロボット停止
 ClearMessage();/メッセージリセット
 until(Message()!=0);/0以外のメッセージが来るまで待機
 if(Message()==2)/メッセージ2がきたら
  {
  OnRev(OUT_A+OUT_C);
  Wait(100);
  OnFwd(OUT_C);
  OnRev(OUT_A+OUT_C);/後退して
  Wait(100);/
  OnFwd(OUT_A);/右に回転して
  Wait(90);
  OnFwd(OUT_A);
  OnFwd(OUT_C);/前進
  Wait(60);
  OnRev(OUT_C);
  OnRev(OUT_A);/左に回転して
  Wait(90);
  OnFwd(OUT_C);
  OnFwd(OUT_A);/前進
  Wait(100);
  SendMessage(1);
  SendMessage(1);/メッセージ1を送信して
  Wait(50);
  Off(OUT_A+OUT_C);
  Off(OUT_A+OUT_C);/停止
  }
 }
*緊急用プログラム [#fd818311]
 int repeat_time;

*緊急用プログラム  //製作者 少年[#fd818311]
本番直前、適当に数値を入れた間に合わせのプログラム。本番で使われたのはこっち。
 int repeat_time; /
 
 task main()
 {
 SetSensor(SENSOR_2,SENSOR_TOUCH);
 Wait(100);
 OnFwd(OUT_B);
 SetSensor(SENSOR_2,SENSOR_TOUCH);/センサ−2をタッチセンサーと定義
 Wait(100);/スイッチを入れてから一秒後に
 OnFwd(OUT_B);/受け身ロボットが動く
 ClearMessage();
 until(Message()!=0);
 if(Message()==3)
 until(Message()!=0);/0以外のメッセージが来るまで待機
 if(Message()==3)/もしメッセージ3を受け取ったら
  {
  Off(OUT_B);
  Off(OUT_B);/受け身ロボット停止
  }
 OnFwd(OUT_A+OUT_C);
 Wait(200);
 OnRev(OUT_C);
 Wait(30);
 OnFwd(OUT_A);
 Wait(100);
 OnRev(OUT_C);
 Wait(30);
 OnFwd(OUT_A+OUT_C);
 Wait(200);
 SendMessage(1);
 Wait(100);
 Off(OUT_A+OUT_C);
 until(SENSOR_2!=0);
 if(SENSOR_2==1);
 OnFwd(OUT_A+OUT_C);/運搬ロボットが始動
 Wait(200);/2秒間進んだ後
 OnRev(OUT_C);/
 Wait(35);/
 OnFwd(OUT_A);/右に回転
 Wait(100);/1秒間進んだ後
 OnRev(OUT_C);/右に回転して
 Wait(35);/
 OnFwd(OUT_A+OUT_C);/前進
 Wait(200);/
 SendMessage(1);/メッセージ1を送信して
 Wait(100);/
 Off(OUT_A+OUT_C);/運搬ロボット停止
 until(SENSOR_2!=0);/センサー2が反応するまで待機
 if(SENSOR_2==1);/センサ−2が反応すると
  {
  SendMessage(4);
  SendMessage(4);/メッセージ4を送信
  }
 ClearMessage();
 until(Message()!=0);
 if(Message()==2)
 ClearMessage();/メッセージリセット
 until(Message()!=0);/0意外のメッセージが来るまで待機
 if(Message()==2)/メッセージ2を受信すると
  {
  OnRev(OUT_A+OUT_C);
  Wait(100);
  OnFwd(OUT_C);
  Wait(90);
  OnFwd(OUT_A);
  Wait(60);
  OnRev(OUT_C);
  Wait(90);
  OnFwd(OUT_C);
  Wait(100);
  SendMessage(1);
  Wait(50);
  Off(OUT_A+OUT_C);
  OnRev(OUT_A+OUT_C);/運搬ロボットが後退して
  Wait(100);/
  OnFwd(OUT_C);/左に曲がり
  Wait(90);/
  OnFwd(OUT_A);/前進して
  Wait(60);/
  OnRev(OUT_C);/右に曲がり
  Wait(90);/
  OnFwd(OUT_C);/前進して
  Wait(100);/
  SendMessage(1);/メッセージ1を送信して
  Wait(50);/
  Off(OUT_A+OUT_C);/停止する
  }
 }
*支柱系プログラム [#tacdff73]
このプログラムは、二つめのNQCに搭載したもの。上の二つのプログラムと併せて使用した。
int UP_TIME=0;
task main()
 {
  SetSensor(SENSOR_2,SENSOR_TOUCH);/センサ−2をタッチセンサーと定義
  until(SENSOR_2!=0);/センサ−2が反応するまで待機
  if(SENSOR_2==1)/センサ−2が反応したら
   {
   SendMessage(3);/メッセージ3を送信
   Wait(50);
   }
 while(1)/無限ループ
 {
 ClearMessage();/メッセージリセット
 until(Message()!=0);/0以外のメッセージが来るまで待機
 if(Message()==1);/メッセージ1を受信したら
  {
  ClearTimer(0);/タイマーリセット
   ClearMessage();/メッセージリセットして
  OnFwd(OUT_A+OUT_B);/缶を取り込むと同時に運び始める
  if(Message()==4);/メッセージ4を受信したら
   {
   FastTimer(0)=UP_TIME;/
   Off(OUT_A);/
   OnFwd(OUT_B);/缶を積んだ滑車が移動を継続し
   Wait(500);
   SendMessage(2);/メッセージ2を送信して
   OnRev(OUT_A);/缶を押さえつけていたアームがあがり
   Wait(UP_TIME);/
   Off(OUT_A);/アームが停止して缶を落とす
   }
  }
 }
 }



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