2005/C1/宇佐美

ロボット製作者

 中川、山口、宇佐美

ロボットの写真

書道ロボット・前 書道ロボット・後ろ

課題:「左」を書く書道ロボット

task main()
{   
   OnRev(OUT_B);
   Wait(50);          
                       //ペンを下げる
   OnFwd(OUT_C);         
   OnFwd(OUT_A);
   Wait(75);
   Off(OUT_C+OUT_A);  
                       //1画目
   OnFwd(OUT_B);
   Wait(50);
   Off(OUT_B);       
                       //ペンを上げる
   OnRev(OUT_C);
   OnRev(OUT_A);
   Wait(120);         
   Off(OUT_C+OUT_A);
   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(115);
   Off(OUT_C+OUT_A);   
   OnFwd(OUT_A);
   OnFwd(OUT_C);
   Wait(30);
   Off(OUT_C+OUT_A);   
                       //2画目へ移動 
   OnRev(OUT_B);
   Wait(50);           
                       //ペンを下げる
   OnFwd(OUT_A);
   OnFwd(OUT_C);
   Wait(90);
   Off(OUT_A+OUT_C);   
                       //2画目
   OnFwd(OUT_B);
   Wait(50);           
   Off(OUT_B);         
                       //ペンを上げる
   OnRev(OUT_C);
   OnRev(OUT_A);
   Wait(95);
   Off(OUT_C+OUT_A);
   OnFwd(OUT_C);
   OnRev(OUT_A);
   Wait(108);
   Off(OUT_C+OUT_A);   
   OnFwd(OUT_C);
   OnFwd(OUT_A);
   Wait(75);
   Off(OUT_C+OUT_A);   
                       //3画目へ移動
   OnRev(OUT_B);
   Wait(50);          
                       //ペンを下げる
   OnFwd(OUT_C);
   OnFwd(OUT_A);
   Wait(40);
   Off(OUT_C+OUT_A);   
                       //3画目
   OnFwd(OUT_B);
   Wait(50);
   Off(OUT_B);         
                       //ペンを上げる
   OnRev(OUT_C);
   OnRev(OUT_A);
   Wait(85);
   Off(OUT_C+OUT_A);
   OnRev(OUT_C);
   OnFwd(OUT_A);
   Wait(107);
   Off(OUT_C+OUT_A);
   OnFwd(OUT_A);
   OnFwd(OUT_C);
   Wait(61);
   Off(OUT_C+OUT_A);   
                       //4画目へ移動
   OnRev(OUT_B);
   Wait(50);           
                       //ペンを下げる 
   OnFwd(OUT_A);
   OnFwd(OUT_C);
   Wait(35);
   Off(OUT_C+OUT_A);   
                       //4画目
   OnFwd(OUT_B);
   Wait(50);
   Off(OUT_B);         
                       //ペンを上げる   
   OnRev(OUT_C);
   OnRev(OUT_A);
   Wait(65);
   Off(OUT_C+OUT_A); 
   OnFwd(OUT_C);
   OnRev(OUT_A);
   Wait(102);
   Off(OUT_C+OUT_A);
   OnFwd(OUT_A);
   OnFwd(OUT_C);
   Wait(40);
   Off(OUT_C+OUT_A);   
                       //5画目へ移動
   OnRev(OUT_B);
   Wait(50);           
                       //ペンを下げる
   OnFwd(OUT_A);
   OnFwd(OUT_C);
   Wait(60);
   Off(OUT_C+OUT_A);   
                       //5画目
   OnFwd(OUT_B);
   Wait(50);
   Off(OUT_B);         
                       //ペンを上げる
}

感想

1度はFloatを使おうとしたけど妥協。 サブルーチンや変数、定数を使わなかったので、かなり長いプログラムになってしまった。 紙に書いてみても、バランスの悪いものとなってしまった。

課題:「左」を書く書道ロボット(改)

#define b 50
sub pen_down()
{  
    OnRev(OUT_B);
    Wait(b);
}
                       //ペンを下げるサブルーチン 
sub pen_up()
{
    OnFwd(OUT_B);
    Wait(b);
    Off(OUT_B);
} 
                       //ペンを上げるサブルーチン 
void go_straight(int t)
{
    Onfwd(OUT_A+OUT_C); Wait(t);                                                 
    Off(OUT_A+OUT_C);
}
                      //直進して止まる関数
void turn_right(int t)
{
    OnFwd(OUT_A); OnRev(OUT_C); Wait(t); 
    Off(OUT_A+OUT_C);   
}
                      //右へ曲がって止まる関数
void turn_left(int t)
{  
   OnFwd(OUT_C); OnRev(OUT_A); Wait(t); 
   Off(OUT_A+OUT_C);
}
                      //左へ曲がって止まる関数
task main()
{   
    pen_down();         
                      //ペンを下げる
    go_straight();   
                      //1画目
    pen_up();      
                      //ペンを上げる
    go_back(120);
    turn_right(115);  [回転] 
    go_straight(30);     
                      //2画目へ移動完了 
    pen_down();          
                      //ペンを下げる
    go_straight(90);
                      //2画目
    pen_up();         
                      //ペンを上げる
    go_back(95);
    turn_left(108);    [回転]
    go_straight(75);   
                       //3画目へ移動完了
    pen_down();          
                       //ペンを下げる
    go_straight(40); 
    Off();   
                       //3画目
    pen_up();         
                       //ペンを上げる
    go_back(85);
    Off();
    turn_right(107)
    Off();             [回転]
    go_straight(61);
    Off();   
                       //4画目へ移動完了
    pen_down();           
                       //ペンを下げる 
    go_straight(35);
    Off();   
                       //4画目
    pen_up();        
                       //ペンを上げる   
    go_back(65);
    Off(); 
    turn_left(102)
    off()
    go_straight(40);
    Off();   
                       //5画目へ移動完了
    pen_down();           
                       //ペンを下げる
    go_straight(60);
    Off();   
                       //5画目
    pen_up();         
                       //ペンを上げる
}

感想

定義と関数を使って改良してみた。 プログラムを見るだけで、動きがなんとなくわかるプログラムに なったと思う。

  • たしかにずいぶんと分かりやすいプログラムになりましたね。 -- 松本(教員)? 2005-12-12 (月) 12:54:12


添付ファイル: file110_1019.JPG 334件 [詳細] file110_1018.JPG 355件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-02-06 (月) 18:41:03