目次 #contents *課題について [#q200cecb] 詳細はこちら[[2019a/Mission2]] *ロボットについて [#o583610d] ロボットの左右の ため左右のタイヤそれぞれに別のモーターを取り付け別々に稼働するようにした. #ref( ピンポン玉はロボット前部のU字型の部分で掬うようにして持ち上げられるようにした. *プログラムについて [#ce2b3d7a] **ピンポン玉を運ぶ [#i94d3817] ピンポン玉を持ち上げるには + アームを下げた状態で近づく + ピンポン玉に十分近づいた状態でアームを上げる この2つの動作が必要である.よってアームが上下するプログラムを以下のように組む. OnRev(OUT_C,20);Wait(500);Off(OUT_C); Onfwd(OUT_C,20);Wait(500);Off(OUT_C); **線に沿っての移動 [#a0f703db] 黒い線に沿って移動するため,線の濃淡や線以外の白紙上を光センサーで調べて5つの区画に分けた. 線の黒い(暗い)箇所は最低値41,また白紙の箇所では70だった.光センサの数値はとなったためこの範囲を5つに分け,暗い側からstep1とした #define step1 45 #define step2 53 #define step3 61 #define step4 69 #define step5 75 #define left0 OnFwd(OUT_A,20);OnRev(OUT_B,20); #define left1 OnFwd(OUT_A,20);Off(OUT_B); #define right0 OnFwd(OUT_B,20);OnRev(OUT_A,20); #define right1 OnFwd(OUT_B,20);Off(OUT_A); #define forward OnFwd(OUT_AB,20); 定義した動作をまとめると下の通りになる |プログラム名|内容| |left0|左に曲がる| |left1|左に曲がる| |right0|右に曲がる| |right1|右に曲がる| |forward|直進する| **コースに沿っての動き [#z330c619] 交差点で任意の方向へ曲がるために交差点を認識した箇所で一度静止するようにする.交差点としての認識は よって線の左右の淵に沿って移動するプログラムを以下のように設定した. sub line_left { SetSensorLight(S3); long t0=0,t1=0,tm=1; while(t1-t0<tm){ if(SENSOR_3<step1){ left0;t0=CurrentTick(); until(SENSOR_3<step3); t1=CurrentTick(); }else if(SENSOR_3<step2){ left1; }else if(SENSOR_3<step3){ forward; }else if(SENSOR_3<step4){ right1; }else if(SENSOR_3<step5){ right0; } } Off(OUT_AB); } sub line_right { SetSensorLight(S3); long t0=0,t1=0,tm=1; while(t1-t0<tm){ if(SENSOR_3<step1){ t0=CurrentTick(); right0; until(SENSOR_3<step3); t1=CurrentTick(); }else if(SENSOR_3<step2){ right1; }else if(SENSOR_3<step3){ forward; }else if(SENSOR_3<step4){ left1; }else if(SENSOR_3<step5){ left0; } } Off(OUT_AB); } **コースを走るプログラム [#k914cb1a] コースはA→M→B→Aとした *まとめ [#lbc481b6]