ライントレース版プログラム  //製作者 少年

結局開発が追いつかず、完成に至らなかったプログラム

int nikai=2;
task main()
{
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);/受け身ロボット停止
 }  
while(nikai==2||1)/
 {
 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;/
   }
  }
 }
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_A);/右に回転して
 Wait(90);
 OnFwd(OUT_C);/前進
 Wait(60);
 OnRev(OUT_A);/左に回転して
 Wait(90);
 OnFwd(OUT_A);/前進
 Wait(100);
 SendMessage(1);/メッセージ1を送信して
 Wait(50);
 Off(OUT_A+OUT_C);/停止
 }
}

緊急用プログラム  //製作者 少年

本番直前、適当に数値を入れた間に合わせのプログラム。本番で使われたのはこっち。

int repeat_time; /

task main()
{
SetSensor(SENSOR_2,SENSOR_TOUCH);/センサ−2をタッチセンサーと定義
Wait(100);/スイッチを入れてから一秒後に
OnFwd(OUT_B);/受け身ロボットが動く
ClearMessage();
until(Message()!=0);/0以外のメッセージが来るまで待機
if(Message()==3)/もしメッセージ3を受け取ったら
 {
 Off(OUT_B);/受け身ロボット停止
 }
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);/メッセージ4を送信
 }
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);/メッセージ1を送信して
 Wait(50);/
 Off(OUT_A+OUT_C);/停止する
 }
}

支柱系プログラム

このプログラムは、二つめの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
Last-modified: 2006-08-11 (金) 16:47:47