*目次 [#t05cd1c9]
#contents
*課題 [#i53ee740]
・A3の紙に相棒の似顔絵を書くロボットを作成せよ。
・ペン以外はキットに含まれる部品を使うこと。
・またキットに付属の輪ゴムは切れやすいので切れないように十分注意すること。
・ひとりにつき一つ以上のプログラムを作成すること。

*ロボット [#z625e0ae]
~・本体は説明書に載っていたローヴァーロボットをそのまま利用しました。
~・無限軌道による移動
~・ペンは車体の後部にモーターによって振り上げたり、振り下ろしたりできるアームを取り付け、そこにキット付属の輪ゴムを使って取り付けました。

*プログラム [#rca9ce37]
**プログラム1 [#d089407d]
~#define B_POWER SetPower(OUT_B,0);//Bの回転速度を調整 
~#define OFF_B Off(OUT_B);     //Bの回転を停止 
~#define GO_STRAIGHT OnFwd(OUT_A+OUT_C);//前進する 
~#define GO_BACK OnRev(OUT_A+OUT_C);//後退する 
~#define OFF Off(OUT_A+OUT_C);   //AとCの回転を停止する
 
  sub P_DOWN()//ペンを降ろすためのプログラム
  {
  B_POWER;   OnFwd(OUT_B);   Wait(50);   OFF_B;
  }
 
  sub P_RAISE()//ペンを上げるためのプログラム
  {
  B_POWER;   OnRev(OUT_B);   Wait(50);   OFF_B;
  } 
 
  task main()
  {
   P_DOWN();
   OnRev(OUT_C);  OnFwd(OUT_A);  Wait(745);  OFF;//輪郭を描く
   P_RAISE();
  
   OnRev(OUT_C);  Wait(100);  OFF;
   GO_STRAIGHT;  Wait(60);  OFF;
   P_DOWN();           //前髪を描く1
   GO_STRAIGHT;  Wait(30);  OFF;
   P_RAISE();
 
   GO_BACK;  Wait(30);  OFF;//前髪を描く2
   OnRev(OUT_A);  Wait(186);  OFF;
   GO_STRAIGHT;  Wait(98);  OFF;
   P_DOWN();
   GO_STRAIGHT;  Wait(40);  OFF;
   P_RAISE();
  
   GO_BACK;  Wait(30);  OFF;//前髪を描く3
   OnRev(OUT_C);  Wait(186);  OFF;
   GO_STRAIGHT;  Wait(120);  OFF;
   P_DOWN();
   GO_STRAIGHT;  Wait(40);  OFF;
   P_RAISE();
 
   GO_BACK;  Wait(30);  OFF;//前髪を描く4
   OnRev(OUT_A);  Wait(186);  OFF;
   GO_STRAIGHT;  Wait(98);  OFF;
   P_DOWN();
   GO_STRAIGHT;  Wait(40);  OFF;
   P_RAISE();
 
   GO_BACK; Wait(150); OFF;
   OnRev(OUT_A); OnFwd(OUT_C); Wait(267); OFF;
   GO_BACK; Wait(50); OFF;
   GO_STRAIGHT; Wait(60); OFF;
   P_DOWN();         //目を描く 左
   GO_STRAIGHT; Wait(40); OFF;
   P_RAISE();
   GO_STRAIGHT; Wait(30); OFF;
   P_DOWN();         //目を描く 右
   GO_STRAIGHT; Wait(40); OFF;
   P_RAISE();
 
  }
 
**プログラム2 [#o05c8a35]
~#define B_POWER SetPower(OUT_B,0);//Bの回転速度を調整 
~#define OFF_B Off(OUT_B);    //Bの回転を停止 
~#define GO_STRAIGHT OnFwd(OUT_A+OUT_C);//前進する 
~#define GO_BACK OnRev(OUT_A+OUT_C);//後退する 
~#define OFF Off(OUT_A+OUT_C);   //AとCの回転を停止する
 
  sub P_DOWN()//ペンを降ろす
  {
  B_POWER;   OnFwd(OUT_B);   Wait(50);   OFF_B;
  }
 
  sub P_RAISE()//ペンを上げる
  {
  B_POWER;   OnRev(OUT_B);   Wait(50);   OFF_B;
  } 





  task main()
  {
  P_DOWN();   //輪郭を描く
  OnRev(OUT_C);  OnFwd(OUT_A);  Wait(750);  OFF;
  P_RAISE();
  
  OnRev(OUT_C);  Wait(100);  OFF;
  GO_STRAIGHT;  Wait(45);  OFF;
  P_DOWN();   //前髪を描く1
  GO_STRAIGHT;  Wait(45);  OFF;
  P_RAISE();
  
  GO_BACK;  Wait(30);  OFF;
  OnRev(OUT_A);  Wait(186);  OFF;
  GO_STRAIGHT;  Wait(98);  OFF;
  P_DOWN();//前髪を描く2
  GO_STRAIGHT;  Wait(40);  OFF;
  P_RAISE();
  
  GO_BACK;  Wait(30);  OFF;
  OnRev(OUT_C);  Wait(186);  OFF;
  GO_STRAIGHT;  Wait(120);  OFF;
  P_DOWN();   //前髪を描く3
  GO_STRAIGHT;  Wait(40);  OFF;
  P_RAISE();
 
  GO_BACK;  Wait(30);  OFF;
  OnRev(OUT_A);  Wait(186);  OFF;
  GO_STRAIGHT;  Wait(98);  OFF;
  P_DOWN();  //前髪を描く4
  GO_STRAIGHT;  Wait(40);  OFF;
  P_RAISE();
  
  GO_BACK; Wait(120); OFF;
  OnRev(OUT_A); OnFwd(OUT_C); Wait(267); OFF;
  GO_BACK; Wait(50); OFF;
  GO_STRAIGHT; Wait(100); OFF;
  P_DOWN();  //左目を描く
  GO_STRAIGHT; Wait(40); OFF;
  P_RAISE();
  GO_STRAIGHT; Wait(30); OFF;
  P_DOWN();  //右目をを描く
  GO_STRAIGHT; Wait(40); OFF;
  P_RAISE();
   
  GO_BACK; Wait(250); OFF;
  OnFwd(OUT_A);  OnRev(OUT_C); Wait(200); OFF;
  GO_STRAIGHT; Wait(80); OFF;
  OnFwd(OUT_A);  OnRev(OUT_C); Wait(200); OFF;
  GO_BACK; Wait(65); OFF;
  P_DOWN();  //鼻を描く
  GO_STRAIGHT; Wait(40); OFF;
  P_RAISE();
  
  
  
  } 


*苦労した点、工夫した点 [#p1f77384]
~・工夫した点は、ペンの上げ下げです。モーターに直接アームをつないでいるため、モーターの動きが速すぎて、アームが壊れてしまうという問題が起きましたが、モーターの回転数を落とすことで対処しました。
~・苦労した点は、二人の似顔絵に差を出すことです。これはほとんど同じプログラムを使用しているために、あまり変化を出せませんでした。結局、片方の顔にはあるパーツが、もう片方にはないという方法で一応は解決しました。

*反省点 [#m5ef5c41]
~・ペンを固定する位置が車体の後部だったので、安定しなかった
~・カッコいいからという理由で無限軌道を使用したところ、小回りも利かないし、誤差と呼べないような差が出てしまった

*コメントをどうぞ [#y90f4f96]
#comment

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