字を書くロボット、そのプログラミングを作成する。(6/7まで)
私は「伏見」という漢字のプログラムを書いた。
車輪で前後,レールで左右に動く,xy平面と考えて作った.
以下からロボット本体の説明を書く.
↑最初歯車が少なく作ると移動が速すぎ,止まるときのずれが大きかったので,小さい歯車から大きい歯車へと何個も噛み合わせることで前後にゆっくり動くようになり,安定した.
↑上からの写真を見るとわかるように、黄色い線二本を通しモーターCで左右(x軸)に動くようにした.
また,写真左のほうの黄色い線に,ペンを支えているアームが一番下まで行ったときに支える役割も持たせた.
モーターA…前後移動(y軸)
モーターB…ペンの上げ下げ
モーターC…左右移動(x軸)
「伏」の人偏
task main () { SetPower(OUT_C,3); OnFwd(OUT_C); Wait(2); OnFwd(OUT_A); Wait(45); Off(OUT_AC); Wait(100); //一画目 OnFwd(OUT_B); Wait(30); Off(OUT_B); Wait(100); //ペンを上げる OnRev(OUT_C); Wait(1); OnRev(OUT_A); Wait(20); Off(OUT_AC); Wait(100); //二画目への移動 OnRev(OUT_B); Wait(15); Off(OUT_B); Wait(100); //ペンをおろす OnFwd(OUT_A); Wait(45); Off(OUT_A); Wait(100); //二画目 OnFwd(OUT_B); Wait(30); Off(OUT_B); Wait(100); //ペンをあげる
「伏」の右側
OnRev(OUT_A); Wait(40); Off(OUT_A); Wait(100); //三画目への移動 OnRev(OUT_B); Wait(15); Off(OUT_B); Wait(100); //ペンをおろす OnRev(OUT_C); Wait(35); Off(OUT_C); Wait(100); //四画目 OnFwd(OUT_B); Wait(30); Off(OUT_B); Wait(100); //ペンを上げる OnFwd(OUT_C); Wait(7); OnRev(OUT_A); Wait(15); Off(OUT_AC); Wait(100); //四画目への移動 OnRev(OUT_B); Wait(15); Off(OUT_B) ;Wait(100); //ペンをおろす OnFwd(OUT_C); Wait(2); OnFwd (OUT_A); Wait(50); Off(OUT_AC); Wait(100); //四画目 OnFwd(OUT_B); Wait(30); Off (OUT_B); Wait(100); //ペンを上げる OnRev(OUT_C); Wait(1); OnRev(OUT_A); Wait(40); Off(OUT_AC); Wait(100); //五画目への移動 OnRev(OUT_B); Wait(15); Off(OUT_B); Wait(100); //ペンをおろす OnReV(OUT_C); Mait(1); OnFwd(OUT_A); Wait(46); Off(OUT_AC); Wait(100); //五画目 OnFwd(OUT_B); Wait(30); Off(OUT_B); Wait(100); //ペンを上げる OnReV(OUT A); Mait(50); OnFwd(OUT_C); Wait(1); Off(OUT_AC); Wait(100) //六画目への移動 OnRev(OUT_B); Wait(15); Off(OUT_B); //ペンをおろす OnRev(OUT_C); Wait(1); OnFwd(OUT_A); Wait(5); Off(OUT_ AC); Wait(100); //六画目 OnFwd(OUT_B); Wait(30); Off(OUT_B); //ペンを上げる
人偏の二画目と右側の二画目の斜めの線が交わらなように調整するのに苦労した.
「伏」から「見」への移動
OnFwd (OUT_C); Wait(2); OnFwd(OUT_A); Wait(65); Off(OUT_AC); Wait(100);
「見」
OnRev(OUT_B); Wait(15); Off(OUT_B); Wait(100); //ペンをおろす OnFwd(OUT_A); Wait(55); Off(OUT_A); Wait(100); //左縦画 OnRev(OUT_C); Wait(30); Off(OUT_C); Wait(100); //下横画 OnRev(OUT_A); Wait(55); Off(OUT_A); Wait(100); //右縦画 OnFwd(OUT_C); Wait(30); Off(OUT_C); Wait(100); //上横画 OnFwd(OUT_A); Wait(18); OffOUT_A); Wait(100); //三画目への移動 OnRev(OUT_C); Wait(30); Off(OUT_C); Wait(100); //三画目 OnFwd(OUT_A); Wait(18); Off(OUT_A); Wait(100); //四画目への移動 OnFwd(OUT_C); Wait(30); Off(OUT_C); Wait(100); //四画目 OnFwd(OUT_B); Wait(30); Off(OUT_B); //ペンを上げる OnFwd(OUT_A); Wait(19); OnRev(OUT_C); Wait(5); Off(OUT_AC); Wait(100); //六画目への移動 OnRev(OUT_B); Wait(15); Off(OUT_B); Wait(100); //ペンをおろす OnFwd(OUT_A); Wait(17); Off(OUT_A); Wait(100); //六画目の縦 OnFwd(OUT_C); Wait(15); Off(OUT_C); Wait(100); //六画目の横 OnFwd(OUT B); Wait(30); Off(OUT_B); //ペンを上げる OnRev(OUT_C); Wait(18); OnRev(OUT_A); Wait(17); Off(OUT_AC); Wait(100); //七画目への移動 OnRev(OUT_B); Wait(15); Off(OUT B); Wait(100); //ペンをおろす OnFwd(OUT_A); Wait(19); Off(OUT_A); Wait(100); //七画目の縦 OnRev(OUT_C); Wait(16); Off(OUT_C); Wait(100); //七画目の横 }
「見」の「目」の横線は,一回一回ペンを上げ下げするとずれてしまったので一画で書いた.
全体的な反省点としては,レールでの移動が少し安定しなかったのでもっと強く固定しなければなかった.また,例えば「伏」の斜めの線を描くときに,モーターA,Cを同時に動かすがAだけゆっくり,Cだけ早く動かすというプログラムの書き方がわからなかった. プログラムが長くなりわかりにくくなってしまったので,次からは#defineなどで本文を短く,簡略化することを目指したい.