自分の名前の一文字を書く書道ロボットの作成をし、そのプログラムを組んだ。今回は貴の字を書くようにした。
ロボットの写真はないが、外観は通常走行する物の右側にペンを上げ下げする機構を取り付けた。人間が右手で字を書くようなものに似ており、ギアを噛み合わせペンが上下し字をかけるようにした。ギアの比を調節することでペンがゆっくり上に触れるなどの工夫をした。
定義は以下のとおりである。 主に長い線や短い線など貴の字の主要なプログラムを定義することにより簡略化をはかる。
#define SPEED 50 //車輪を回す出力 #define TURN_TIME1 500 //90度回転するための時間 #define TURN_TIME2 300 //最後のはらいを書くために回転するための時間 #define TIME1 1000 //長い直線を書くための時間 #define TIME2 800 //短い直線を書くための時間 #define TIME3 500 //長い直線の半分の時間 #define TIME4 200 //移動時間 #define TIME5 333 //長い1/3の時間 #define TIME6 275 //短い1/3の時間 #define GO1 OnFwd(OUT_BC,SPEED);Wait(TIME1);Off(OUT_BC); //長い直線のプログラム #define GO2 OnFwd(OUT_BC,SPEED);Wait(TIME2);Off(OUT_BC); //短い直線のプログラム #define GO3 OnRev(OUT_BC,SPEED);Wait(TIME3);Off(OUT_BC); //長い直線の半分のプログラム #define GO4 OnFwd(OUT_BC,SPEED);Wait(TIME4);Off(OUT_BC); //移動のプログラム #define GO5 OnFwd(OUT_BC,SPEED);Wait(TIME5);Off(OUT_BC); //長い1/3のプログラム #define GO6 OnFwd(OUT_BC,SPEED);Wait(TIME6);Off(OUT_BC); //短い1/3のプログラム #define GO7 OnRev(OUT_BC,SPEED);Wait(TIME6);Off(OUT_BC); #define RIGHT_TURN1 OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED);Wait(TURN_TIME1);Off(OUT_BC); // その場で90度右旋回のプログラム #define RIGHT_TURN2 OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED);Wait(TURN_TIME2);Off(OUT_BC); //その場で少なめに右旋回のプログラム #define LEFT_TURN1 OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED);Wait(TURN_TIME1);Off(OUT_BC); //その場で90度左旋回のプログラム #define LEFT_TURN2 OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED);Wait(TURN_TIME2);Off(OUT_BC); //その場で少なめに左旋回のプログラム #define ARM_POWER 30 //ペンを上げ下げための出力 #define ARM_TIME 100 //ペンを上げ下げする時間 #define ARM_DOWN OnFwd(OUT_A,ARM_POWER);Wait(ARM_TIME);Off(OUT_A); //ペンを下ろすためのプログラム #define ARM_UP OnRev(OUT_A,ARM_POWER);Wait(ARM_TIME);Off(OUT_A); //ペンを上げるためのプログラム
ここから貴の字の上半分を書いていく。
task main() { ARM_DOWN; //貴の上半分 GO2; //貴の一画目 ARM_UP; RIGHT_TURN1; ARM_DOWN; GO1; //貴の二画目 ARM_UP; RIGHT_TURN1; ARM_DOWN; GO2; //貴の三画目 ARM_UP; RIGHT_TURN1; ARM_DOWN; GO1; //貴の四画目 GO3; ARM_UP; RIGHT_TURN1; ARM_DOWN; GO1; //貴の五画目 ARM_UP; RIGHT_TURN1; ARM_DOWN; GO3; //貴の六角目 GO1; //同じく貴の六角目 ARM_UP; //貴の上半分終了
ここからは貴の字のした半分を書く。
LEFT_TURN1; //貴の下半分 貝の字 LEFT_TURN1; ARM_DOWN; GO1; //貝の一画目 ARM_UP; RIGHT_TURN1; ARM_DOWN; GO2; //貝の二画目 ARM_UP; RIGHT_TURN1 ARM_DOWN; GO1; //貝の三画目 ARM_UP; RIGHT_TURN1; ARM_DOWN; GO2; //貝の四画目 ARM_UP; RIGHT_TURN1; ARM_DOWN; GO5; ARM_UP; RIGHT_TURN1; ARM_DOWN; GO2; //貝の五画目 ARM_UP; LEFT_TURN1; ARM_DOWN; GO5; ARM_UP; LEFT_TURN1; ARM_DOWN; GO2; //貝の六画目 ARM_UP; RIGHT_TURN1; ARM_DOWN; GO5; ARM_UP; RIGHT_TURN1; ARM_DOWN; GO6; ARM_UP; LEFT_TURN2; LEFT_TURN2; ARM_DOWN; GO6; //貝の七画目 GO7; ARM_UP; RIGHT_TURN2; RIGHT_TURN2; ARM_DOWN; GO6; ARM_UP; LEFT_TURN2; ARM_DOWN; GO6; //貝の八画目 ARM_UP; //貝の字終了 }