[[2005/A2/課題1]] *「右」という字を書く [#r3f12029] -制作者:レタス、富岡 ***ロボットの概要 [#l09a5f56] -モーター2つが左右のタイヤをそれぞれ動かし、3つ目のモーターがペンを上下に動かす。 #ref(2005/A2/富岡/k1r.jpg,60%) ロボ右前方からの様子。3つ目のモーターと、ペンを動かす部分が見える。 **ペンの動かし方 [#tb045b9d] -溝の入った輪状のパーツに輪ゴムを取り付け、それをモーターで回すことで、輪ゴムに接している鉛筆が上下に動く。 #ref(2005/A2/富岡/k1r_pen.jpg,around,50%) その仕組みを横からの断面図で見る。 #clear ***困った! -- けれど、工夫した点[#y4ab7a43] -鉛筆がゴム面に密着しない!~ --横、正面の穴空きブロックに、9箇所ピンを挿すことで解決⌣~ ゴム輪の回転に連動し、ぶれなくなった。ただ、たまにピンの差し込み加減の調整をしなければならない。 -移動中にペンを下げるも、ペンが浮き上がって書けない!~ --書くべき間はモーターを回しっぱなしにし、ペンを下げ続けることで解決⌣~ 車体が浮き上がることもなかった。 #ref(2005/A2/富岡/k1r_kotei.jpg,50%) **プログラム [#oe7a9aef] //「右を書く」 #define L OUT_A //表現を変える #define Pen OUT_B //OUT_*をL・Rに、OUT_BはPenに #define R OUT_C // プログラムしやすかった #define pen_down OnFwd(Pen); //マクロ:ペン下げる 回転は止めない #define pen_up OnRev(Pen);Wait(3);Off(Pen); //ペン少し上げる void go (int t) //関数たち:前進、( )で移動時間を受け取る {OnFwd(L+R);Wait(t); Off(L+R);} void back (int t) //後退 ※〜(int t2)から改良 {OnRev(L+R);Wait(t); Off(L+R);} void turn_left (int t) //左旋回 {OnRev(L); OnFwd(R); Wait(t); Off(L+R);} void turn_right (int t) //右旋回 {OnFwd(L); OnRev(R); Wait(t); Off(L+R);} void cv_r (int t, int w1, int w2) //1画目の曲線移動を生む関数 { repeat(t){ OnFwd(L+R);Wait(w1); //一瞬前進 Float(R);Wait(w2); //一瞬右タイヤ回さず } //を繰り返す } task main() { Wait(100); //この間にロボから離れる pen_down; //1画目を書く cv_r(12,2,2); cv_r(18,2,3); //二段階の曲線で pen_up; Off(L+R); back(25);turn_right(60);back(10); //2画目への移動 pen_down; //2画目 back(150); pen_up; turn_right(20);go(190);turn_left(140);go(15); //移動 pen_down; //3画目 go(50); pen_up; go(90);OnRev(L);Wait(230); pen_down; //4画目 くち go(70);turn_right(40); //紙から離さず書く(口部分の2画目) pen_up; go(50);turn_right(180);back(20); pen_down; //5画目 back(50); pen_up; } ***プログラム上での工夫 [#e88a36c7] -1画目の左払いを実現するcv_r関数。~ どうしても曲線にしたかった。 直進と、右タイヤを回さないのを細かく繰り返せば、人が見たら緩やかな曲線に見えると思ってやってみた。~ 直進と、右タイヤを回さないのを細かく繰り返せば、人が見たとき緩やかな曲線に見えると思ってやってみた。~ それっぽくはなった&wink; &color(green){コメントをどうぞ}; -違う関数を定義する際に使用する変数(仮の変数)は同じものを使ってもかまいません。例えば go, back,…を定義するときはどの場合も int t を使って行うことができます (もちろん違う変数名を使ってもかまいませんが)。 -- [[松本(教員)]] &new{2005-11-24 (木) 12:05:13}; -直しました。 なぜかエラーだと思い込んでいましたが、エラーになりませんでした。助かりました。 -- [[富岡]] &new{2005-11-29 (火) 21:29:11}; #comment