子供のころ住んでいた仙台を選んだ。
x軸、y軸のレールを作り、その交差点に腕をペンを設置する。そして、それぞれのレールを直角に並べたキャタピラの上に固定して、キャタピラを動かすことで文字を書く。ペンは単純にモーターにペンを固定させることで上下させる。 ペンの上下と、二つのキャタピラの動きだけを制御することで、プログラミングの難易度を可能な限り下げることを目的としている。
ペンが左上に来るような状態を初期位置とする。初期位置から右方向を正のX軸、下方向を正のY軸と設定する。 モーターの回転角を変数tとし、X,Yそれぞれの方向へtの分動くようにプログラムを書く。X方向の動き、Y方向の動き、ペンの上げ、下げを組み合わせ、文字を書く。
筆ペンが傾いているため、負のX方向に線を引くことを可能な限り避ける。
def move_X(t): mX.run_to_rel_pos(position_sp=t, speed_sp=100, stop_action='hold')
def move_Y(t): mY.run_to_rel_pos(position_sp=t, speed_sp=100, stop_action='hold')
def up(): mZ.run_to_rel_pos(position_sp=80, speed_sp=100, stop_action='hold')
def down(): mZ.run_to_rel_pos(position_sp=-80, speed_sp=100, stop_action='hold')
最初は大まかな動きをプログラミングし、実際に動かしながらプログラムを修正する。
#!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep
mX = LargeMotor('outA') mY = LargeMotor('outB') mZ = MediumMotor('outD') def move_X(t): mX.run_to_rel_pos(position_sp=t, speed_sp=100, stop_action='hold') def move_Y(t): mY.run_to_rel_pos(position_sp=t, speed_sp=100, stop_action='hold') def up(): mZ.run_to_rel_pos(position_sp=80, speed_sp=100, stop_action='hold') def down(): mZ.run_to_rel_pos(position_sp=-80, speed_sp=100, stop_action='hold') def mreset(): mX.reset() mY.reset() mZ.reset() down() sleep(1) move_X(-80) move_Y(70) sleep(1) up() sleep(1) move_X(65) move_Y(-45) sleep(1) down() sleep(1) move_Y(105) sleep(1) up() sleep(1) move_Y(-145) sleep(3) move_X(70) sleep(1) down() sleep(1) move_Y(125) sleep(1) up() sleep(1) move_Y(-100) sleep(1) move_X(-55) sleep(1) down() sleep(1) move_Y(80) sleep(1) move_X(80) move_Y(-30) sleep(1) up() sleep(1) move_Y(-80) sleep(1) down() sleep(1) move_Y(80) sleep(1) up() sleep(1) move_Y(-130) sleep(1) move_X(65) sleep(1) down() sleep(1) move_X(-50) move_Y(50) sleep(1) move_X(100) move_Y(-30) sleep(1) up() sleep(1) move_Y(-45) sleep(1) move_X(-45) sleep(1) down() sleep(1) move_Y(60) move_X(60) sleep(1) up() sleep(1) move_X(-100) sleep(1) move_Y(75) sleep(1) down() sleep(1) move_Y(45) sleep(1) move_X(90) move_Y(-30) sleep(1) up() sleep(1) move_Y(-45) sleep(1) move_X(-90) sleep(1) down() sleep(1) move_X(90) move_Y(-30) sleep(1) move_Y(55) sleep(1) up() sleep(1)
とてもではないが「仙台」には見えない。辛うじて文字であるとは理解できるが、成功したとは言えないだろう。
‐まず何より、部品たちがきっちりかみ合っていないことを挙げられる。かみ合わないことによって生じる隙間によって、安定感を失うことになった。 ‐次に、筆ペンが傾いていることも、原因であると考えられる。これにより必要以上に接触面積が大きくなり、望まない線を引いてしまった。
上記の問題を踏まえ