- 追加された行はこの色です。
- 削除された行はこの色です。
[[2016b/Member]]
目次
#Contents
*課題 [#ofb10795]
前回のライントレースの延長で、さらに今回は二つのロボットを通信させることが目的だ。
バッターとピッチャーのロボットをそれぞれ通信させ、放たれた玉を打ち的に当てる。
5球打ち合計の得点を競う。
*機体 [#a17c167b]
今回自分は投球ロボットを担当した。
投げる機構は、玉を高いところから転がし放つようにした。
しかし、高さが足りなかったので球速が落ちてしまい、玉がまっすぐ進まず打つことが困難になってしまった。
投球場所までの移動はライントレースを用いた。
*投球ロボットプログラム [#j32e7f20]
#define TURNR(A) RotateMotorEx(OUT_BC,40,A,100,true,true);Wait(1000);//右に曲がる
#define TURNL(L) RotateMotorEx(OUT_BC,40,L,-100,true,true);Wait(1000);//左に曲がる
#define TYOKUSIN OnFwdSync(OUT_BC,40,0); //直進する
#define CM(K) RotateMotorEx(OUT_BC,40,20.47315*K,0,true,true);Wait(1000);//K(cm)直進
#define HASSYA RotateMotor(OUT_A,-90,90);Wait(1000);RotateMotor(OUT_A,-90,-90);//ボールを発射、装填
sub BASYO()//ラインを検知して超えるプログラム
{
SetSensorLight(S1);
TYOKUSIN;
until(SENSOR_1<35);
Off(OUT_BC);
Wait(500);
CM(5);
Wait(500);
}
task main()
{
int SIREI;//子機からの信号を入れる場所
TURNR(110);
CM(36);
TURNR(150);
repeat(3){ //ラインを3回超えるまで
BASYO();
}
CM(-13);//位置の調節のためバック
TURNR(130);
until(BluetoothStatus(1)==NO_ERR);//通信
RemotePlayTone(1,440,1000);//通信
Wait(1000);
RemoteStartProgram(1,"DAGEKI.rxe");//通信
while(SIREI<12){
ReceiveRemoteNumber(MAILBOX1,true,SIREI);//通信
if(SIREI==11){
PlaySound(SOUND_CLICK);
Wait(200);
HASSYA;
SIREI=0;//通信
}
}
}