車本体は前進と後退の前後運動のみを行う。車の前方についているのが横の動きを担当するレール、そのレールの上に載っているのがペンを上下運動させるためのタイヤです。ペンの上下運動はペンをタイヤに挟み込み、タイヤを回すことで行った。 車の前方にレールとペンの上下装置を組み込むとどうしても重心が前に行ってしまい不安定になってしまうため、後方とレール側面におもりとしてタイヤを取り付けることで対応した。レールの可動域の問題から横幅は10センチほどしか動かないため大きな文字を書くことが困難な事とRISは速度調整ができないため斜め方向の動きに弱いことが欠点である。
ペンについては先が軽く当たっただけでインクの出る名前ペンを使用する。今回私が挑戦する漢字は「岳」である。ここで問題となるのは前述したように1画目の斜めである。斜め棒にトライした結果うまい斜めにならなかった。斜め棒を縦棒で書いてみてもたいして違和感は感じなかったため短めの縦棒で代用することにする。ロボットだと漢字の中にある四角、今回の場合だと「丘」のなかにある四角があるせいでペンを何度も上げたり下げたりしなければ線が2重3重となってしまうため、ペンの上下をしっかりと正確にこなしていきたい。
#define DOWN OnRev(OUT_C); Wait(5); Off(OUT_C); Wait(20); #define UP OnFwd(OUT_C); Wait(5); Off(OUT_C); Wait(20); #define BACK(BACK_TIME) OnFwd(OUT_A); Wait(BACK_TIME); Off(OUT_A); Wait(20); #define GO(GO_TIME) OnRev(OUT_A); Wait(GO_TIME); Off(OUT_A); Wait(20); #define MIGI(MIGI_TIME) OnFwd(OUT_B); Wait(MIGI_TIME); Off(OUT_B); Wait(20); #define HIDARI(HIDARI_TIME) OnRev(OUT_B); Wait(HIDARI_TIME); Off(OUT_B); Wait(20);
上から順に
task main() {1画目
BACK(18); //「岳」一角目の短い縦棒2画目書き終わった後ペンを上げ、1画目まで戻り、3画目に備える
BACK(45); //「丘」左の長い縦棒 UP; GO(28); DOWN;3画目
MIGI(50); //「丘」上の横棒 UP;少し左に戻し4画目に備える
HIDARI(10); DOWN;4画目
BACK(38); //「丘」右の縦棒5画目ここは横の動きが大きいのでペンがレールからよく外れてしまうので一番気を付けるべきポイントだった
MIGI(13); HIDARI(70); //「丘」下の横棒真ん中までペンを戻す
UP; MIGI(35); DOWN;6画目
BACK(43); //「山」真ん中縦棒ここでペンを上げなければ線が2重になってしまうため、いったんペンを上げる
UP; MIGI(25); DOWN;7画目
GO(30); //「山」右縦棒 UP; BACK(25); DOWN;8画目ここで一気に下の棒を引く、ここも長い横棒を使う外れないように注意を払った
HIDARI(65); //「山」下横棒9画目
GO(30); //「山」左縦棒 }
今回使用する動きをすべて初めに定義することができたためプログラムがスムーズ、簡単にかけたと思う。しかし同じ時間でも床との摩擦などによって毎回ペンの移動距離が変わるので、狙って正確な距離が出せないところがつらかった。今回使用したペンが太いペンと細いペンが両端についているタイプでタイヤで挟む部分の太さが一定でなくどんどん細くなっていき、はさんでいるタイヤが空回りするのではないかというところが不安だったが、うまくいってよかった。
車が前進、後退したあとも慣性によりゆっくりと車が進み続けるためうまく線と線がかみ合わない部分が出てきてしまった。目標の1つであったペンの上下は、はじめの方を除けば比較的うまくいった。1,2画目について線が途切れてしまったのは車が後退する際にペンが斜めになってしまい、ペン先が紙まで届かなくなってしまったことが主な原因と思われる。何度もレールが動きすぎてペンが上下マシンと共に外れてしまうアクシデントが起こったが書く文字を小さくすることで対処した。不格好な形ではあるが最初に比べれば読めなくはないレベルにまでは引き上げられたと思う。次はNXCでやってみたい。