光センサーを使って、ライン上を走るロボットの作成
モーター3つとセンサー1つをつけられるように、
本体を所定の位置から少しずらした位置につけるようにした
今回はボールを運ぶため、このようなアームにした
ボールを掴んだり持ち上げすると難しくなると判断し、
アームを下ろし、アームでボールを囲むだけで運べるようにした
今回はB→Aと走る
#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,20); task main() { SetSensorLight(S3); int n=0; long t1=CurrentTick(); long t0=CurrentTick(); 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); kaku; Wait(1800); Off(OUT_BC); Wait(1000); } } while(CurrentTick()-t1<15000){ if(SENSOR_3<28){ hu; } else if(SENSOR_3<35){ lu; } else if(SENSOR_3<50){ go; } else if(SENSOR_3<57){ hsa; } else { 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); }
今回はアームなど、ロボット製作の方は工夫ができ、それが上手くいったためよかった。
しかし、プログラミングの方は交差点など難しいところもあり、まだまだだと思った。
次回は関数などを使って、よりスムーズなプログラムになるようにしたい。