課題1のプログラムのページ

このページは課題1の「プログラムの説明」と「個人的な感想」のページです。

プログラム

  • 「祐」は難しかったので、しめすへん「ネ」書きプログラムを作りました。

使用したプログラム

  • 以下「ネ」書きプログラムです。
#define MOVE_T1 5		//モーターを動かす単位時間の設定

  //sub関数の定義
void up(){      	 	//up() == アームを上げる。
	OnFwd(OUT_B);
	Wait(75);	
	Off(OUT_B);}

void down(){      		//down() == アームを下げる。
	OnRev(OUT_B);
	Wait(75);	
	Off(OUT_B);}

void go_f(int i){    		//go_f( 整数値 ) == 整数値×MOVE_T1[時間]だけ前進する。
	OnFwd(OUT_A+OUT_C);
	Wait(i*MOVE_T1);
	Off(OUT_A+OUT_C);}

void go_r(int i){    	 	//go_f( 整数値 ) == 整数値×MOVE_T1[時間]だけ後進する。
	OnRev(OUT_A+OUT_C);
	Wait(i*MOVE_T1);
	Off(OUT_A+OUT_C);}
 
void turn_r(int i){    	//turn_r( 整数値 ) == 整数値×MOVE_T1[時間]だけ筆先を中心に右回転する。
	go_r(14);
	OnFwd(OUT_A);
	OnRev(OUT_C);
	Wait(i*MOVE_T1);
	Off(OUT_A+OUT_C);
	go_f(14);}

void turn_l(int i){       	//turn_l( 整数値 ) == 整数値×MOVE_T1[時間]だけ筆先を中心に左回転する。
	go_r(14);
	OnFwd(OUT_C);
	OnRev(OUT_A);
	Wait(i*MOVE_T1);
	Off(OUT_A+OUT_C);
	go_f(14);}
 
   //メイン関数
task main(){
	down();     		 //1画目
	go_f(6);
	up();

	turn_l(33);
	go_r(5);

	down();			 //2画目
	go_f(11);
	up();
 
	turn_l(22);

	down();	  		 //3画目
	OnRev(OUT_A+OUT_C);
	Float(OUT_A);
	Wait(18*MOVE_T1);
	On(OUT_A);
	Off(OUT_A+OUT_C);
	up();
	
	OnFwd(OUT_A+OUT_C);
	Float(OUT_A);
	Wait(7*MOVE_T1);
	On(OUT_A);
	Off(OUT_A+OUT_C);
	turn_l(16);
	
	down();        		 //4画目
	go_r(13);
	up();

	turn_r(4);
	go_f(17);
	turn_l(14);

	down();        		//5画目
	go_r(5);
	up();}

プログラムの説明

  • プログラムの前半は「サブ関数」の定義で後半が「メイン関数」です。
  • メイン関数内のdown()からup()までが一画です。

苦労した点

  • 「ロボットの動き」と「筆先の動き」が異なるので、「筆先の動き」を考えてプログラムする苦労しました。
    • 筆先を中心に回転させるため、ロボットが回転するときは、
  1. 筆先の位置にロボットの回転中心が来るように前進する。
  2. ロボットが回転する。
  3. もとの位置に筆先が来るよう後進する。
    の3つの動作をセットにすることで「ロボットの動き」と「筆先の動き」を同じものにすることができました。

工夫した点

  • 頻繁に行う、筆の「上げ」「下げ」や、ロボットの「回転」などをサブ関数を使用して一つの関数にすることで、メイン関数内の命令の数を少なくすることが出来ました。

反省点

  • ロボットの再現性が高くない(例えば、同じ時間モーターを動かして回転させるたとしても、下の材質が異なったり、前後の命令が異なる、と回転角が異なってしまう。)ので、本番と同じ条件で前後の流れを考慮してプログラムを作らないといけないことがわかった。
  • サブ関数には、プログラムの見た目を分かり易くしたり、同じ動作を簡単に行わせることが出来る。という利点があるが、一方で、小回りのきくプログラムを作る場合は決まった動作しかできないサブ関数は柔軟性に欠けることがわかった。
  • ログラムし易いロボットを作ることも重要だと思った。

感想

  • 筆を中心にしてロボットを回転させるプログラムを作るのが大変でした。

リンク

ロボットの説明のページ
2006b/A4/課題1右

このページの制作者のページ
2006b/A4/a4r


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-11-24 (金) 00:59:11