- 追加された行はこの色です。
- 削除された行はこの色です。
[[2014b/Member]]
#contents
*課題 [#kdc33ae8]
線を沿って行くロボットで指定されたコースで指令を完了する
*作ったロボット [#d2b4c1bf]
#ref(2014b/Member/ArisiaT/Mission2/2.jpg,30%,Fullshot)
#ref(2014b/Member/ArisiaT/Mission1/2675.jpg,30%,Fullshot)
Referenceのロボットの通りに作った。
基本であるため説明は省略する。
**着眼点 [#v0a7df71]
**ユニット1 [#hd58c6da]
#ref(2014b/Member/ArisiaT/Mission1/unit1.jpg,10%,unit1)
**工夫 [#v0a7df71]
#ref(2014b/Member/ArisiaT/Mission2/1.jpg,30%,Fullshot)
光の反射、また光の明るさによって、影響を受け安いのが実際のところ発見された
そこで、光量の影響を避けるためにセンサーのあたりに影ができるようにした。
**ユニット2 [#o9228bb5]
#ref(2014b/Member/ArisiaT/Mission1/unit2.jpg,20%,unit2)
*Program [#b3597000]
#define DO 523
#define RE 587
#define MI 659
#define PA 698
#define SOL 784
#define THRESHOLD 55
#define SPD_H 50
#define SPD_L 25
#define OnRL(spdR,spdL) OnFwd(OUT_B,spdR);OnFwd(OUT_C,spdL);
#define GOFWD OnRL(SPD_H,SPD_H);
#define L1 OnRL(SPD_L,-SPD_L);
#define L0 OnRL(SPD_L,0);
#define R0 OnRL(0,SPD_L);
#define R1 OnRL(-SPD_L,SPD_L);
#define STEP 1
#define nMAX 500
#define short_BRK Off(OUT_BC);Wait(1000);
#define CRS_T 200
#define CRS_LINE OnRL(SPD_L,SPD_L);Wait(CRS_T);short_BRK;
void CRSway(int Count) // program for crossway
{
PlayTone(SOL,1);
short_BRK;
R1;
Wait(0.5*STEP*nMAX);
if(Count==1) //turn left
{PlayTone(DO,1);
OnFwd(OUT_B,50);
OnRev(OUT_C,20);
Wait(500);
Off(OUT_BC);}
else if(Count==2) //turn right
{PlayTone(RE,1);
OnFwd(OUT_BC,30);
Wait(300);
OnFwd(OUT_C,50);
OnRev(OUT_B,50);
Wait(300);
Off(OUT_BC);}
else if(Count==3) //turn left
{PlayTone(MI,1);
OnFwd(OUT_B,50);
OnRev(OUT_C,20);
Wait(500);
Off(OUT_BC);}
else if(Count==4) // go front
{PlayTone(PA,1);
OnFwd(OUT_BC,50);
Wait(800);
Off(OUT_BC);}
else if(Count==5)
{PlayTone(SOL,1);
OnFwd(OUT_BC,50);
Wait(800);
Off(OUT_BC);}
}
task main()
{
int CrossCount=0;
SetSensorLight(S3);
int nOnline=0;
while(true){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15)
{L1;
nOnline=nOnline+2;}
else{
if(SENSOR_3<THRESHOLD-5)
{L0;
nOnline++;}
else if(SENSOR_3<THRESHOLD+5)
{GOFWD;}
else if(SENSOR_3<THRESHOLD+15)
{R0;}
else{R1;}
nOnline=0;}
Wait(STEP);
}
CrossCount++;
CRSway(CrossCount);
nOnline=0;
}
}
*プログラム組み方 [#j86e0302]
交差点判断のreferenceがあまりにも優秀であったため、交差点で直進するロボットで直線の部分を構造体に変わり、交差点に入ったらCrossCountで何回目か確認した後、CRSwayという交差点命令構造体に送り、何回かの変数により決められいた動作をする。だけで解決した。
*Program [#b3597000]
*プログラム組み方 [#j86e0302]
もちろん速度、長さ、距離、時間などによって変化する値は全部やってみながら調節した。
*残りの課題 [#ofd8c869]
また、何回目の交差点かによって、違う音が動作前になり、動作をわかりやすくした。