*目次 [#hc429614] #contents *課題 [#j2ac578a] 光センサーを使って、ライン上を走るロボットの作成 *ロボットの仕組み [#p55c4934] **本体 [#y816fc96] モーター3つとセンサー1つをつけられるように、 本体を所定の位置から少しずらした位置につけるようにした #ref(image (1).jpeg) **アーム [#ide5bbd0] 今回はボールを運ぶため、このようなアームにした #ref(image.jpeg) ボールを掴んだり持ち上げすると難しくなると判断し、 アームを下ろし、アームでボールを囲むだけで運べるようにした *走る [#e707bfa0] **コース [#w1daa75a] #ref(・鬣、・鷽゙.png) 今回はB→Aと走る **プログラム [#u7ae0d45] #define hsa OnFwd(OUT_B,30);OnFwd(OUT_C,-10); #define lsa OnFwd(OUT_B,30);OnFwd(OUT_C,0); #define hu OnFwd(OUT_B,-10);OnFwd(OUT_C,30); #define lu OnFwd(OUT_B,0);OnFwd(OUT_C,30); #define go OnFwd(OUT_BC,30); #define kaku OnFwd(OUT_B,30);OnFwd(OUT_C,0); #define kaku OnFwd(OUT_B,30);OnFwd(OUT_C,20); task main() { SetSensorLight(S3); int n=0; long t1=CurrentTick(); long t0=CurrentTick(); while(CurrentTick()-t1<3000){ while(CurrentTick()-t1<3500){ if(SENSOR_3<28){ hsa; } else if(SENSOR_3<35){ lsa; } else if(SENSOR_3<50){ t0=CurrentTick(); go; } else if(SENSOR_3<57){ t0=CurrentTick(); hu; } else { t0=CurrentTick(); lu; } } if(CurrentTick()-t0>120){ } Off(OUT_BC); Wait(2000); go; kaku; Wait(1800); Off(OUT_BC); Wait(1000); } } while(CurrentTick()-t1<15000){ if(SENSOR_3<28){ hsa; hu; } else if(SENSOR_3<35){ lsa; lu; } else if(SENSOR_3<50){ go; } else if(SENSOR_3<57){ hu; hsa; } else { lu; } lsa; } } } Off(OUT_BC); OnFwd(OUT_A,10); Wait(1500); Off(OUT_A); while(CurrentTick()-t1<32000){ if(SENSOR_3<28){ hsa; } else if(SENSOR_3<35){ lsa; } else if(SENSOR_3<50){ go; } else if(SENSOR_3<57){ hu; } else { lu; } } } } Off(OUT_BC); OnFwd(OUT_BC,-40); Wait(100); OnFwd(OUT_A,-10); Wait(1500); Off(OUT_BC); OnFwd(OUT_BC,70); Wait(60); } *反省・感想 [#uf858c3e] 今回はアームなど、ロボット製作の方は工夫ができ、それが上手くいったためよかった。 しかし、プログラミングの方は交差点など難しいところもあり、まだまだだと思った。 次回は関数などを使って、よりスムーズなプログラムになるようにしたい。