[[戻る>2005/A6]]

[[課題1>2005/練習問題#kadai1]]

* 問題点 [#hb90ce88]
- ペンをどうやって持たせるか
- ペンをどうやって上げ下げするか
- どうやれば綺麗に文字が書けるか 

* 試作ロボット [#ca485764]
- 試作1
-- 歯車で腕を持ち上げたり下げたりしようとした。
うまく噛み合わず動かなくて失敗


* 最終的なロボットとプログラム [#k8684c6b]
-歯車が噛み合わなかった点を反省して、ゴムで腕を上げ下げさせるようにした。
-それでも、手動で腕を動かした後はうまく動かなくなるので、ウォーミングアップ用のプログラム(腕を上げ下げさせる)を作った。


**各自のプログラム [#r9e76aa2]
-K.M

 sub arms_down()
 {
  OnFwd(OUT_B);
  Wait(100);
  Off(OUT_B);
 } 
 sub arms_up()
 {
  OnRev(OUT_B);
  Wait(100);
  Off(OUT_B);
 } 
 sub turn_right()
 {
  OnFwd(OUT_A);
  OnRev(OUT_C);
  Wait(85);
  Off(OUT_A+OUT_C);
 }
 sub turn_left()
 {
  OnFwd(OUT_C);
  OnRev(OUT_A);
  Wait(85);
  Off(OUT_A+OUT_C);
 } 
 task main()
 {
  arms_down();
  OnFwd(OUT_A);
  OnRev(OUT_C);
  Wait(70);
  Off(OUT_A+OUT_C);
  arms_up();//1
 
  OnFwd(OUT_A);
  OnRev(OUT_C);
  Wait(16);
  Off(OUT_A+OUT_C);
 
  OnFwd(OUT_A+OUT_C);
  Wait(42);
  Off(OUT_A+OUT_C);
  turn_right();
  OnRev(OUT_A+OUT_C);
  Wait(142);
  Off(OUT_A+OUT_C);
  arms_down();
  OnRev(OUT_A+OUT_C);
  Wait(152);
  Off(OUT_A+OUT_C);
  arms_up();//2
 
  OnFwd(OUT_A+OUT_C);
  Wait(213);
  Off(OUT_A+OUT_C);
  turn_right();
  OnRev(OUT_A+OUT_C);
  Wait(131);
  Off(OUT_A+OUT_C);
  arms_down();
  OnRev(OUT_A+OUT_C);
  Wait(48);
  Off(OUT_A+OUT_C);
  arms_up();//3
 
  OnFwd(OUT_A+OUT_C);
  Wait(148);
  Off(OUT_A+OUT_C);
  turn_left();
  OnRev(OUT_A+OUT_C);
  Wait(100);
  Off(OUT_A+OUT_C);
  arms_down();
  OnRev(OUT_A+OUT_C);
  Wait(69);
  Off(OUT_A+OUT_C);
  arms_up();//3.5
 
  OnFwd(OUT_A+OUT_C);
  Wait(100);
  Off(OUT_A+OUT_C);
  turn_right();
  OnRev(OUT_A+OUT_C);
  Wait(100);
  Off(OUT_A+OUT_C);
  arms_down();
  OnRev(OUT_A+OUT_C);
  Wait(48);
  Off(OUT_A+OUT_C);
  arms_up();//4
 
  OnFwd(OUT_A+OUT_C);
  Wait(100);
  Off(OUT_A+OUT_C);
  turn_left();
  OnRev(OUT_A+OUT_C);
  Wait(31);
  Off(OUT_A+OUT_C);
  arms_down();
  OnRev(OUT_A+OUT_C);
  Wait(69);
  Off(OUT_A+OUT_C);
  arms_up();//5
 
  OnRev(OUT_A);
  OnFwd(OUT_C);
  Wait(340);
  Off(OUT_A+OUT_C);
  }


-AI

 sub pen_down(){//   腕を下げる
	Off(OUT_A+OUT_C);
	OnFwd(OUT_B);
	Wait(100);
	Off(OUT_B);
 }
 sub pen_up(){//    腕を上げる
	Off(OUT_A+OUT_C);
	OnRev(OUT_B);
	Wait(100);
	Off(OUT_B);
 }
 void go(int t){//    まっすぐ走る
	OnFwd(OUT_A+OUT_C);
	Wait(t);
 }
 void back(int t){//   バックする
	OnRev(OUT_A+OUT_C);
	Wait(t);
 }
 task main(){
	pen_down();
	OnFwd(OUT_A);
	OnRev(OUT_C);
	Wait(70);
	pen_up();//    一画目
	
	
	
	OnFwd(OUT_C);
	OnRev(OUT_A);
	Wait(70);
	back(30);
	OnFwd(OUT_A);
	Wait(70);
	OnFwd(OUT_C);
	Wait(10);
	OnRev(OUT_A);
	Wait(70);
	pen_down();
	go(180);
	pen_up();//    二画目
	
	
	
	back(120);
	OnFwd(OUT_A);
	Wait(74);
	back(50);
	OnFwd(OUT_C);
	Wait(10);
	pen_down();
	go(70);
	pen_up();//    三画目
	
	
	
	
	OnFwd(OUT_C);
	OnRev(OUT_A);
	Wait(70);
	OnRev(OUT_C);
	Wait(100);
	pen_down();
	go(100);
	pen_up();//    四画目
	
	
	
	go(100);
	OnFwd(OUT_A);
	OnRev(OUT_C);
	Wait(70);
	OnRev(OUT_A);
	Wait(100);
	pen_down();
	go(100);
	pen_up();//     四画目その2
	
	
	
	go(100);
	OnRev(OUT_C);
	Wait(70);
	OnFwd(OUT_C);
	Wait(10);
	pen_down();
	back(100);
	pen_up();//   五画目	
 }
* 反省点 [#kb41a65b]
- 一秒間に走る距離と、何秒で回転するかを計ったが、電池の消耗→交換によりズレが生じてしまった



#comment


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