#contents *ロボットの紹介 [#p4b9127d] 当初は何も思いつかず、最初に作った前後左右に動くロボットの脇からアームを伸ばし、ペンを取り付けるだけの単純なロボットを組み立てました。 **機能 [#v6be992d] 紙の上をロボットが動き、そこにペンの上げ下げの動作を加えることにより、文字を書くことを可能にしました。 ***ペン [#jd7dcb42] ペンをどのようにしてロボット本体に取り付けようか悩んだ結果、長いブロックに輪ゴムで固定して、それを本体の脇から伸ばしたアームに取り付けました。 またアームを下げた際にペンが上にスライドしてしまい、もう一度アームを下げるときにペン先が紙に接地しなくなってしまったので、そうならないようにペンが上下しないようにも、もう一か所輪ゴムで固定しました。 ***モーター [#p5618ab5] モーター2つを両側のタイヤに、1つをペンの上げ下げに用いました。 *プログラム [#t2e1dae2] float GetAngle(float d) { const float diameter = 5.45; const float pi=3.1415; float ang =d/(diameter*pi)*360.0; return ang; } #define SPEED 50 #define Ninety GetAngle(16.5) #define ten GetAngle(10) #define Five GetAngle(5) #define Eight GetAngle(8) #define HalfNinety GetAngle(8.25) #define NineRight RotateMotor(OUT_C,SPEED,Ninety); RotateMotor(OUT_BC,-SPEED,Ten); #define NineLeft RotateMotor(OUT_B,SPEED,Ninety); RotateMotor(OUT_BC,-SPEED,Ten); #define HalfNineLeft RotateMotor(OUT_BC,SPEED,Five); RotateMotor(OUT_B,SPEED,HalfNinety); RotateMotor(OUT_BC,-SPEED,Eight); #define HalfNineRight RotateMotor(OUT_BC,SPEED,Five); RotateMotor(OUT_C,SPEED,HalfNinety); RotateMotor(OUT_BC,-SPEED,Eight); #define PenUp RotateMotor(OUT_A,SPEED,-50); #define PenDown RotateMotor(OUT_A,SPEED,50); #define GoGo RotateMotor(OUT_BC,SPEED ,angle); #define BackBack RotateMotor(OUT_BC,SPEED ,-angle); #define GoUp GoGo;PenUp; #define NineLeftGoGo2NineLeftDown NineLeft;GoGo;NineLeft;GoGo;NineLeft;PenDown; #define NineLeftDownBackUp HalfNineLeft;PenDown;BackBack;PenUp; #define Plus(t) angle += GetAngle(t); #define Minus(s) angle -= GetAngle(s); task main() { Wait(2000); Int angle = GetAngle(7); GoUp; Minus(3.5);//3.5cm進む NineLeftGoGo2NineLeftDown; Plus(11.5);//15 GoUp; Minus(2);//13 BackBack;HalfNineRight;PenDown; Minus(9);//4 GoUp;BackBack;NineLeft;PenDown;GoUp;BackBack;HalfNineLeft;GoGo;PenDown; Plus(3);//7 GoUp; Minus(3.5);//3.5 NineLeftGoGo2NineLeftDown; Plus(2.5);//6 GoUp; Plus(5.3137);//11.3137 HalfLeftDownBackUp;HalfNineLeft; Minus(5.3137);//6 GoGo; Plus(3.3137);//9.3137 HalfLeftDownBackUp; }