[[2008a/A9右]]
*目次 [#j4020af2]
#contents
*課題 [#n706c9b6]
~A3の紙に相棒の似顔絵を書くロボットを作る。
~一人につき一つ以上のプログラムを作成。
*ロボットのハードウェア部分 [#hf7f326a]
#ref(2008a/A9/課題1右/P2008_0522_161043.JPG,640x480)
~本体の全体写真
~モーターA及びCを車輪に接続、モーターBはペンの上げ下ろしギミックとして使用
#ref(2008a/A9/課題1右/P2008_0522_161140.JPG,640x480)
~ペンの上げ下ろしギミックは、おろした際の衝撃で部品が外れるという現象におちいった。
~そのため、プログラム面でモーターBの出力を調整するとともに上の写真のように
~パーツに大幅な強化を加え動作中の分解を避けている。
~アームの部分は、単純にモーターBにギアをかませず取り付けている。
#ref(2008a/A9/課題1右/P2008_0522_163157.JPG,640x480)
車輪部は、軽量化と改良を簡単にするために説明書の組み立て方を踏襲せず一から作り直した。
*ロボットのプログラミング部分 [#n706c9b6]
#REF(2008a/A9/課題1右/P2008_0515_190441.JPG,640x480)
上記の写真のように、当初のプログラミングは壮大なモノとなった。
特に眼鏡の部分、髪の部分はとても長いプログラムになっている。
**試作段階のプログラム [#da2d5503]
 void tr(int t1)
 {
     OnRev(OUT_A); OnFwd(OUT_C); Wait(t1);
     Off(OUT_A+OUT_C);
 }
 
 void tl(int t2)
 {
     OnFwd(OUT_A); OnRev(OUT_C); Wait(t2);
     Off(OUT_A+OUT_C);
 }
 
 void  st(int t3)
 {
     OnFwd(OUT_A+OUT_C); Wait(t3);  // 
     Off(OUT_A+OUT_C);
 }
 
 void ba(int t4)
 {
     OnRev(OUT_A+OUT_C); Wait(t4);  //
     Off(OUT_A+OUT_C);
 }
 
 void wu(int t5)
 {
 OnFwd(OUT_B); Wait(t5);  //
     Off(OUT_B);
 }
 
 void wd(int t6)
 {
 SetPower(OUT_B,2);  
 OnRev(OUT_B); Wait(t6);  //
     Off(OUT_B);
 }
 
 task main()
 {
 st(50); //kami 
 wu(20);
 st(20);
 wd(20);
 st(100); //hidari rinkaku
 wu(20);
 ba(80);
 tl(58);  //ago
 st(40);
 wd(20);
 st(90);
 wu(20); //migi rinkaku
 ba(30);
 tl(58);
 st(20);
 wd(20);
 st(100);
 wu(20); //kami
 st(20);
 wd(20);
 st(50);
 wu(20);
 tl(135);
 st(20); //zujou
 wd(20);
 st(50);
 wu(20);
 tr(58);
 st(20);
 tr(58);
 wd(20);
 st(50);
 wu(20);
 tl(135);
 st(20); //zujou
 wd(20);
 st(50);
 wu(20);
 tr(58);
 st(20);
 tr(58);
 wd(20);
 st(50);
 wu(20);
 tl(135);
 st(20);
 wd(20);
 st(50);
 wu(20);
 st(50);
 wd(20); //megane
 st(40);
 wu(20);
 ba(40);
 tl(58);
 st(20);
 wd(20);
 st(50);
 wu(20);
 st(15);
 wd(20);
 st(50);
 wu(20);
 ba(40);
 tl(58);
 st(20);
 wd(20);
 st(40);
 wu(20);
 ba(40);
 tl(58);
 st(20);
 wd(20);
 st(50);
 wu(20);
 st(15);
 wd(20);
 st(50);
 wu(20);
 tl(165);
 st(10);
 wd(20);
 st(20);
 wu(20);
 st(10);
 wd(20);
 st(30);
 wu(20);
 st(10);
 wd(20);
 st(15);
 wu(20);
 st(10);
 wd(20);
 st(30);
 wu(20);
 st(10);
 wd(20);
 st(20);
 wu(20);
 tr(135);
 st(70);
 tr(58);
 st(20);
 wd(20);
 st(40);
 wu(20);
 tl(135);
 st(20);
 wd(20);
 st(40);
 wu(20);
 st(15);
 wd(20);
 st(25);
 wu(20);
 tl(58);
 wd(20);
 st(40);
 }
**正式採用のプログラミング [#f4d52a35]
~しかし、前記のプログラミングは膨大な量になり細かい編集が簡単ではなく、
~また他のグループのモノは、もっとシンプルな事を考慮して新たにシンプルなプログラムを組み直した。
***眼鏡ありのプログラミング [#j9284794]
 void tr(int t1)
 {
     OnRev(OUT_A); OnFwd(OUT_C); Wait(t1);
     Off(OUT_A+OUT_C);
 }
 
 void tl(int t2)
 {
     OnFwd(OUT_A); OnRev(OUT_C); Wait(t2);
     Off(OUT_A+OUT_C);
 }
 
 void  st(int t3)
 { 
     OnFwd(OUT_A+OUT_C); Wait(t3);  // 
     Off(OUT_A+OUT_C);
 }
 
 void ba(int t4)
 {
     OnRev(OUT_A+OUT_C); Wait(t4);  //
     Off(OUT_A+OUT_C);
 }

 void wu(int t5)
 {
 OnFwd(OUT_B); Wait(t5);  //
     Off(OUT_B);
 }
 
 void wd(int t6)
 {
 SetPower(OUT_B,1);  
 OnRev(OUT_B); Wait(t6);  //
     Float(OUT_B);
 }
 
 task main()
 {
 tl(280);
 st(16);
 tl(8);
 tr(16);
 tl(8);
 wu(20);
 st(9);
 wd(20);
 st(22);
 wu(20);
 st(9);
 wd(20);
 tl(8);
 tr(16);
 tl(8);
 st(11);
 tl(8);
 tr(16);
 tl(8);
 wu(20);
 st(9);
 wd(20);
 st(22);
 wu(20);
 st(9);
 wd(20);
 tl(8);
 tr(16);
 tl(8);
 st(16);
 wu(20);
 tr(65);
 st(10);
 tl(70);
 ba(13);
 wd(20);
 ba(42);
 wu(20);
 ba(12);
 wd(20);
 ba(42);
 wu(20);
 tl(58);
 st(27);
 tr(58);
 wd(20);
 st(42);
 wu(20);
 st(12);
 wd(20);
 st(42);
 wu(20);
 tl(58);
 ba(4);
 tl(58);
 st(153);
 wd(20);
 st(40);
 wu(20);
 ba(100);
 tl(58);
 st(70);
 wd(20);
 st(15);
 }
***眼鏡無しのプログラミング [#m82f874e]
 void tr(int t1)
 {
     OnRev(OUT_A); OnFwd(OUT_C); Wait(t1);
     Off(OUT_A+OUT_C);
 }
 
 void tl(int t2)
 {
     OnFwd(OUT_A); OnRev(OUT_C); Wait(t2);
     Off(OUT_A+OUT_C);
 }
 
 void  st(int t3)
 {
     OnFwd(OUT_A+OUT_C); Wait(t3);  // 
     Off(OUT_A+OUT_C);
 }
 
 void ba(int t4)
 {
     OnRev(OUT_A+OUT_C); Wait(t4);  //
     Off(OUT_A+OUT_C);
 }
 
 void wu(int t5)
 {
 OnFwd(OUT_B); Wait(t5);  //
     Off(OUT_B);
 } 
 
 void wd(int t6)
 {
 SetPower(OUT_B,2);  
 OnRev(OUT_B); Wait(t6);  //
     Off(OUT_B);
 } 
 task main()
 {tl(253);
 
 wu(20);
 st(20);
 wd(20);
 st(35);
 wu(20);
 st(20);
 wd(20);
 st(35);
 wu(20);
 tl(110);
 st(153);
 wd(20);
 st(40);
 wu(20);
 ba(100);
 tl(58);
 st(90);
 wd(20);
 st(15);
 }
~上記の二つのプラグラムが、シンプルに組みなおしたモノだ。
~メンバー二人の区別を眼鏡の有りor無しで行う単純なモノだ。
~ただ、眼鏡にはこだわり、長方形の眼鏡を正確に書くプログラムを組んでいる。
~(まだ調整中のため、完成した写真は少し待ってください。)
*苦労した点、感想、役割分担等々 [#fcdf2d33]
~今回の課題では、プログラミングの基礎と入力、ホームページ作成をこれを書いている自分が。
~ハードの制作、プログラミングの構成(上の紙に書かれたプログラムの元参照)をパートナーが行いました。
~初めから決めて分担したわけではなく、作業してるうちに自然に役割が分かれたのですが、実際とても上手なコンビネーションが取れたと思います。
~最後まで、この分担でやっていくのもいいかも知れません。
*コメントをどうぞ [#fd6c0af2]
#comment



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS