[[2018a/Member]] #contents * 課題 [#p7a5139d] ** 書道ロボットの製作 [#fb6c75c9] 書道ロボットを作り,自分にゆかりのある場所の漢字2文字(10角以上)を書く。 ** 選んだ文字 [#x34f62be] 自分の地元の地名の「中洲」を選んだ. * 製作したロボット [#nf7a848c] 全体像はこちら. #ref(./IMG_3765.JPG,70%,全体像) 御覧xのように,X,Y,Z軸を用いてうごくようにした.なお,ギア比をなるべくX軸とY軸が同じになるように調整した. ** X軸 [#rf8d26bd] ラックという部品を使って,回転運動を直線運動にして動かした. #ref(./IMG_3765.JPG,70%,全体像) ** Y軸 [#g2e4375e] 車体を前後させることにより動かした. ** Z軸 [#s1b6baea] モーターの回転をピン棒と中空棒でつないで回転をつなぎ,プーリによって平行四辺形の形を変えることでペンを上下させた. #ref * 書き方[#p878c777] 「中」の字は真ん中の四角を一筆書きで書き、最後に真ん中の線を引いた。「洲」の字は先にさんずいの点上2つをfor文で右下がりになるように書き、下の点を右上がりになるように書いた。つぎに「州」の部分を書き順通りにかいた。 * プログラムの内容[#m4e6fb86] **プログラムを書くにあたって [#pfe6751e] **完成したプログラム [#f7eb0208] defineを利用して書くときに楽になるようにした。(defineで簡略化した内容は、A,B,Cの正転・逆転の入出力、waitの表記及び時間になる。詳細は下記にて。)以下、使用したプログラムと解説。 #define A OnFwd(OUT_A); //前進 #define Ab OnRev(OUT_A); //後進 #define As Off(OUT_A); //停止 #define B OnFwd(OUT_B); //横移動 #define Bb OnRev(OUT_B); //横移動 #define Bs Off(OUT_B); //停止 #define PU OnFwd(OUT_C);Wait(50);Off(OUT_C); //ペン上げ #define PD OnRev(OUT_C);Wait(50);Off(OUT_C); //ペン下げ #define W Wait //Waitの略 #define Ta 50 //時間1 #define Tb 100 //時間2 #define Tc 25 //時間3 #define Td 13 //時間4 以上が使用したdefineの内容になる。C端子でペンの上げ下げをさせるため一括で制御して、PenUp、PenDown、の略語で表している。また、A、B端子の2端子はそれぞれY軸、X軸の制御にあたり、正転を無印、逆転をbackのb、停止をstopのsをつけて大文字と小文字の組み合わせで表した。簡略化のためにwaitはwを使って簡略化し、waitの時間はTa〜Tdを使用して制御がしやすいようにした。 task main() { PD //1文字目開始:一画目の四角形 A W(Ta); As B W(Tb); Bs Ab W(Ta); As Bb W(Tb); Bs PU //四角形終わり Ab //中心の縦の棒 W(Tc); As B W(Ta); Bs PD A W(Tb); As //1文字目終了 以上までが一文字目のプログラムになる。 PU //2文字目の位置合わせ開始 A W(Tc); As Bb W(Ta); Bs //位置合わせ完了 上のプログラムは、一文字目に重ねないために位置調整をするプログラムである。 int a=0; //2文字目開始 for(a=0;a<2;a++){ //aはループ用変数、さんずいの点上2つ PD A B W(Tc); As Bs PU A W(Td); As Bb W(Tc); Bs } //さんずいの上2点終わり A //さんずい最後の点開始 W(Tc); As PD Ab B W(Tc); As Bs PU //さんずい終わり ここまでが、「洲」の字のさんずいを書くプログラムである。 Ab //位置合わせ開始 W(Tc*2+Td*2); As B W(Tc-Td); Bs //位置あわせ終了 上は、「州」の字を書き始めるために位置を調整するプログラムになる。 A //「州」開始 W(Tc); As PD A W(Ta); As PU Ab W(Ta+Tc); As B W(Td); Bs PD A W(Tb-Td); Bb W(Td); As Bs PU Ab W(Tb-Td/4); As B W(Td*2); Bs for(a=2;a<4;a++){ A W(Tc); As PD A W(Ta); As PU Ab W(Ta+Tc); As B W(Td); Bs PD A W(Tb); As PU Ab W(Tb-Td/4); As B W(Td); Bs } } *完成した文字 [#jd95800e]