担当:リンゴスター(・∀‐)v&SEGA(*´Д`)=з
☆目次
#contents
*ぼくらのマシン。 [#r3311a60]

#ref(2006b/A7/課題1左/cimg0156_Medium.jpg,around,100%,全体像)
これがぼくらのマシンです。

マシンを作るうえでベースとなったのはTAの方々のグループのものですが、あくまで参考にしながら一生懸命やったつもりです

タイヤに使うモーターは前後移動のためのひとつだけ。のこり2つのモーターを上下・左右にそれぞれ使い、字を書きます。

タイヤにはモーターはひとつなのでマシンはいろいろ動き回らないし、マシンをターンさせる角度を考えたりする必要もなかった分、比較的プログラムはラクだったと思います。&br;
&br;
ちなみに見えにくいかもしれませんが、今回、マシンには操縦士:メカ崎くんが搭乗しています。
                             
#ref(2006b/A7/課題1左/cimg0159_Medium.jpg,around,right,100%,スライドシステム)
&br;

正面からの写真です。

真ん中にモーターの歯車が見えると思います。このモーターが回るとその下にあるギザギザが動き、ペンのついたアームごと左右に移動ができます。

中央になんか黒い部品がエックスみたいについてますが、あれはスライドさせるとどうしてもマシンに負荷がかかってだんだん崩壊してきてしまったのでエックスで止めました。

&br;

&br;

&br;

&br;

&br;

&br;
#ref(2006b/A7/課題1左/cimg0158_Medium.jpg,around,100%,左から) 
&br;

これは上下にペンを動かすためのモーターですね。

これが棒を回して反対側のアームを動かすわけです。

でもアームとペンはくっついてるし、アームのモーターも当然つながってるわけだから…ペンもアームもモーターも、全部一緒に左右に動かさないといけないわけだ!これには結構まいりましたね(´ー`)「

&br;

&br;

&br;

&br;

&br;

&br;

&br;
#ref(2006b/A7/課題1左/cimg0157_Medium.jpg,around,right,100%,右から)
&br;

で、これが(俺が撮ったんでボケてますが)例のアームです。

ゴムのついたリール(?)を回して上下に動きます。

ペンはアームにゴムでうまいことくくり付けています。

こんな仕組み考えたひとはすごいと思いますよ。

&br;

&br;

&br;

&br;

&br;

&br;

&br;
#ref(2006b/A7/課題1左/cimg0160_Medium.jpg,around,100%,解体後)
&br;

これらの技術が結集してこのマシンができました。

でもなんかごちゃごちゃして片付けなんか面倒そう…ご心配なく!なんとこのマシンあっという間にアームとスライド部分が取り外せて片付けラクラク!収納スペースもとりません。非常に良心的なマシンでございます。

そんなこんなで形にはなりましたが、中身がなければただの抜け殻。マシンの頭脳であるプログラムをつくらなければいけません。

ではそのプログラムを見てくださいよ。

&br;

&br;

&br;

&br;

&br;

&br;
*プログラム1 「見」を書きたい [#fc4fcbe6]
 sub  pen_down()		    //筆を下ろす			
 {
	OnRev(OUT_A);Wait(50);
	Off(OUT_A);
 }
 sub  pen_up()         //筆を上げる
 {
	OnFwd(OUT_A);Wait(50);
	Off(OUT_A);
 }
 void  slide_right(int r)      //筆を右に移動
 {
	OnFwd(OUT_B);Wait(r);
	Off(OUT_B);
 }
 void  slide_left(int s)        //筆を左に移動
 {
	OnRev(OUT_B);Wait(s);
	Off(OUT_B);
 }
 void  go(int t)                //本体の前進
 {
	OnFwd(OUT_C);Wait(t);
	Off(OUT_C);
 }
 void  back(int u)         //本体の後進
 {
	OnRev(OUT_C);Wait(u);
	Off(OUT_C);
 }
 
 task main()
 {
	pen_down();             //1画目『|』
	back(60);
	pen_up();        //2画目の位置に移動
	go(60);
	pen_down();       //2画目『ー』と『|』
	slide_right(20);
	back(60);
	pen_up;         //3画目の位置に移動
	go(40);
	slide_left(20);
	
	repeat(2){
				pen_down();    //3画目(4画目も)『ー』
				slide_right(20);
				pen_up();      //次の位置に移動
				slide left(20);
				back(20);
			}
	
	pen_down();       //5画目『ー』
	slide_right(20);
	pen_up();        //6画目の位置に移動
	slide_left(20);
	pen_down();       //6画目『ノ』
	back(10);
	OnRev(OUT_C);      //ここはサブルーチンを使うとうまく動作しなかったため、省略してない
	Wait(15);
	OnRev(OUT_B);
	Wait(10);
	Off(OUT_B+OUT_C);
	pen_up();        //7画目の位置に移動
	slide_right(14);
	go(30);
	pen_down();       //7画目
	back(20);
	slide_right(10);
	OnFwd(OUT_C);      //上と同じ
	Wait(5);
	OnFwd(OUT_A);
	Wait(50);
	Off(OUT_A+OUT_C);
 }                  //完成
*プログラム2 「長」を書きたい [#g1fd9845]
 関数を使ったプログラムを書きました(-∀-)v

 void go_straight(int t)      //前進を定義
 {
 OnFwd(OUT_C);
 Wait(t);
 Off(OUT_C);
 }
 void go_back(int t)         //後退を定義
 {OnRev(OUT_C);
 Wait(t);
 Off(OUT_C);
 }
 void slide_left(int t)           //ペンの左移動を定義
 {
 OnRev(OUT_B);
 Wait(t);
 }
 void slide_right(int t)          //ペンの右移動を定義
 {
 OnFwd(OUT_B);
 Wait(t);
 Off(OUT_B);
 }
 void down_pen(int t)             //ペンを下げることを定義
 {
 OnRev(OUT_A);
 Wait(t);
 Off(OUT_A);
 }
 void up_pen(int t)               //ペンを上げることを定義
 {
 OnFwd(OUT_A);
 Wait(t);
 Off(OUT_A);
 }

 (ペンを上げて右いっぱいにペンが寄った状態でスタート)
 task main()
 {
 slide_left(5);                   //「長」1画目『ー』
 down_pen(40);
 slide_left(30);
 up_pen(40);
 slide_right(30);                 //2画目の位置まで移動
 
 down_pen(40);                    //2画目『|』
 go_straight(60);
 up_pen(40);
 go_back(40);             //3画目の位置まで移動
 
 repeat(2){                  //3,4画目『-』2つ
 down_pen(40);
 slide_left(20);
 up_pen(40);
 slide_right(20);
 go_straight(20);
 }                              
 
 slide_right(15);                 //5画目の位置まで移動
 down_pen(40);                    //5画目『―』
 slide_left(60);
 up_pen(40);
 slide_right(35);                 //6画目の位置まで移動
 
 down_pen(40);                    //6画目『|』と『/』(ハネ)
 go_straight(60);                 
 OnRev(OUT_B);                    //『/』のとこ
 Wait(5);
 OnRev(OUT_C);
 Wait(30);
 Off(OUT_B+OUT_C);
 up_pen(40);
 go_straight(20);               //7画目の位置まで移動
 
 down_pen(40);                    //7画目『/』
 OnFwd(OUT_B+OUT_C);
 Wait(10);
 Off(OUT_B+OUT_C);
 up_pen(40);
 go_back(20);                     //8画目の位置まで移動                   
 slide_right(15);                 
 
 down_pen(40);                    //8画目『\』
 OnRev(OUT_B);
 OnFwd(OUT_C);
 Wait(35);
 Off(OUT_B+OUT_C);
 up_pen(40);                      //…書けた。
 }
*書けた! [#gedcf0d7]
#ref(2006b/A7/課題1左/cimg0155_Medium.jpg,around,100%,字)
&br;
そしてついに書けた字がこれ!(^▽^)/

よくいうと風情があってとてもロボが書いたとは思えません。筆を使って書くとこんな感じですが、ふつうのマジックペンを使うともう少し直線のしっかりした字体になります。

ここまで来るのにこれだけの手間と時間がかかるとは思いませんでした。今ロボットによってわたしたちの身の回りの多くの製品が作られるていることが当たり前のようになっていますが、そんな当たり前なものも、ひとつひとつ製作者が苦労して試行錯誤のすえ作り出したものであると文字を書き終えて思いました。

&br;

&br;

&br;
*工夫と課題と反省と [#fa915189]
-工夫したとこ
--このロボットは縦にはいくらでも進むのでいいのですが、横はペンのスライドする範囲に限界があるのでどうしても文字が小さく、もしくは縦長になってしまいます。その分細かな動きになってくるのでゆっくり動いてくれないとたいへん苦労しました。なので大きなギアを使い、ギア比を落としてゆっくりマシンを動かしました。
--モーターとアームをただ一本の棒でつないで動かすと横にスライドするときその勢いでアームがブレてしまいました。アームとマシンをいくつかの箇所でつなげることでそのブレを解消しました。
--タイヤが三輪なのもちょっとした訳があって、前タイヤが二つだとペンと左前タイヤが当たり、余計横の書ける範囲が狭まってしまいます。三輪はそんな理由でつけました。
--
--
--
-課題と反省
--やはりまず書ける範囲が狭すぎるという点です。実際できた文字も大体5×5cmくらいで、それがこのロボの限界であり最大の課題だと言えます。
--もう少しアームとスライドの部分もゆっくり動けばキレイに書けたかなぁ。                      

bySEGA
--
--
--





*コメントをどうぞ! [#qb5f06a4]
-?よく書けていますね。字が予想外にちっちゃくまとまっているのが面白いですね。 -- [[ゆき(TA)]] &new{2006-11-24 (金) 13:23:13};

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS