課題1 ロボッッタ君が水を書く♪

〜ロボッッタ君〜

kadaimizu.jpg

このロボになるまでの製作過程

ぷろぐらむ1(試作)

// 作成者:コミ
//  作成日:2006-5-21

task main ()
{
   OnRev(OUT_B);          //ペンを下げる     
   Wait(4);
   Float(OUT_B);
   OnFwd(OUT_A+OUT_C);  //1画目 AとCのモータ正回転  
   Wait(160);
   Float(OUT_A+OUT_C);   
   OnRev(OUT_C);     //Cのモータ逆回転(右回転)
   Wait(30);
   Float(OUT_C);     
   OnFwd(OUT_B);     //ペンを持ち上げる
   Wait(4);
   Float(OUT_B);
   OnFwd(OUT_C);     //Cのモータ正回転
   Wait(65);
   Float(OUT_C);
   OnRev(OUT_C);
   Wait(180);
   Float(OUT_C);
   OnRev(OUT_B);
   Wait(4);
   Float(OUT_B);
   OnFwd(OUT_A+OUT_C);  //2画目 AとCのモータ正回転
   Wait(60);
   Float(OUT_A+OUT_C);  
   OnFwd(OUT_B);     //ペンを持ち上げる
   Wait(4);
   Float(OUT_B);
   OnFwd(OUT_A+OUT_C);   //AとCのモータ正回転
   Wait(10);
   Float(OUT_A+OUT_C);
   OnRev(OUT_A);     //Aのモータ逆回転(左回転)
   Wait(90);
   Float(OUT_A);
   OnRev(OUT_A+OUT_C);   //AとCのモータ逆回転(後進)
   Wait(30);
   Float(OUT_A+OUT_C);    
   OnRev(OUT_B);     //ペンを下げる
   Wait(4);
   Float(OUT_B);
   OnFwd(OUT_A+OUT_C);  //AとCのモ−タ正回転
   Wait(85);
   Float(OUT_A+OUT_C);
   OnFwd(OUT_B);     //ペンを持ち上げる
   Wait(4);
   Float(OUT_B);
   OnRev(OUT_A+OUT_C);  //AとCのモータ逆回転
   Wait(10);
   Float(OUT_A+OUT_C);
   OnRev(OUT_C);     //Cのモータ逆回転
   Wait(90);
   Float(OUT_C);
   OnRev(OUT_A+OUT_C);  //AとCのモータ逆回転
   Wait(100);
   Float(OUT_A+OUT_C);
   OnRev(OUT_B);     //ペンを下げる
   Wait(4);
   Float(OUT_B);
   OnFwd(OUT_A+OUT_C);  //3画目 AとCのモータ正回転
   Wait(60);
   Float(OUT_A+OUT_C);
   OnFwd(OUT_B);     //ペンを持ち上げる
   Wait(4);
   Float(OUT_B);
   OnFwd(OUT_A+OUT_C);  //AとCのモータ正回転
   Wait(100);
   Float(OUT_A+OUT_C);
   OnRev(OUT_A);     //Aのモータ逆回転
   Wait(175);
   Float(OUT_A);
   OnRev(OUT_B);     //ペンを下げる
   Wait(4);
   Float(OUT_B);
   OnFwd(OUT_A+OUT_C);   //4画目 AとCのモータ正回転
   Wait(90);
   Float(OUT_A+OUT_C);
   OnFwd(OUT_B);      //ペンを持ち上げる
   Wait(4);
   Float(OUT_B);
}	

難しかった点

ロボットのプログラミングは始めてだったので試作プログラムにかなりの時間を費やした。
とりあえずOnFwdやOnRevだけで書いてみた。
しかしそれでは修正するのにとてもめんどくさいと感じた
特に水の2画目、3画目がたいへんだった。書き始めの位置を決めるのがとても苦労した。何度プログラムを直したことか...
しかしまだ完璧ではなく微妙にバランスが悪い...

ぷろぐらむ2(改良)

//  作成者:コミ
//  作成日:2006-5-24

#define PEN_UP 4    //ペンを持ち上げる
#define PEN_DOWN 4   //ペンを下げる
#define go_straight(t) OnFwd(OUT_A);OnFwd(OUT_C);Wait(t);Float(OUT_A+OUT_C);
#define go_straight1(t) OnRev(OUT_A);OnRev(OUT_C);Wait(t);Float(OUT_A+OUT_C);
#define turn_left(t) OnRev(OUT_A);Wait(t);Float(OUT_A);
#define turn_right(t) OnRev(OUT_C);Wait(t);Float(OUT_C);
#define turn_left1(t) OnFwd(OUT_C);Wait(t);Float(OUT_C);
#define pen_up OnFwd(OUT_B);Wait(PEN_UP);Off(OUT_B);
#define pen_down OnRev(OUT_B);Wait(PEN_DOWN);Off(OUT_B);

task main()
{
  pen_down;            //1画目
  go_straight(160);  //1.6秒間前進
  turn_right(30);      //0.3秒間右旋回
  pen_up;              
  turn_left1(65);
  turn_right(180);   //1.8秒間右旋回
  pen_down;      //2画目
  go_straight(60);   //0.6秒間前進
  pen_up;
  go_straight(10);   //0.1秒間前進
  turn_left(90);    //0.9秒間左旋回
  go_straight1(30);  //0.3秒間後進
  pen_down;
  go_straight(85);   //0.85秒間前進
  pen_up;
  go_straight1(10);  //0.1秒間前進
  turn_right(90);   //0.9秒間右旋回
  go_straight1(100);  //1秒間後進
  pen_down;      //3画目
  go_straight(70);   //0.7秒間前進
  pen_up;
  go_straight(100);  //1秒間前進
  turn_left(175);   //1.75秒間左旋回
  pen_down;      //4画目
  go_straight(90);   //0.9秒間前進
  pen_up;
}

工夫した点

試作プログラムをマクロを使って書き換えた。マクロを使うことによってプログラムが見やすくなった。
試作プログラムは直すのにめんどうだったが、マクロを使い直しやすくした。

反省点

プログラムはまだ試作なので、これを改良したプログラムを完成させたい。(5月23日)
ペンを持ち上げる部分のギア比を変えてスピードを落とせばよかった。
ペンをうまく調整しないと、たまに字が書けない時があるのが残念だ。
時間に余裕を持たせてやっていたつもりだったが、かなり時間がたりなかった。 
なので次回はもっと余裕を持たせてやりたい。

かんそう

初めての課題だったので手探り状態だった。ペンを持たせるためにはどうすればいいかでかなり考えた。
「水」を書くぷろぐらむでも結構長いのに驚いた。
苦労の末に「水」を書くプログラムがなんとか完成してよかった。

コメント


 

 


添付ファイル: filekadaimizu.jpg 298件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-05-29 (月) 20:37:02