2011a/A3/課題3右/Chrisのページ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2011a/A3/課題3右]]
#define THRESHOLD 40 //線をたどるための光センサーの敷居
int lMax = 0; //前向きのセンサーの一番高い値
int tMax = 0; //前向きのセンサーが一番高い値を見た時間
//黒い線をたどる関数
task kijun_ugoki()
{
while (true)
{
if (SENSOR_2 > THRESHOLD)
{
OnFwd(OUT_A);
Float(OUT_C);
}
else
{
Float(OUT_A);
OnFwd(OUT_C);
}
}
}
//ロボットをランプに向ける
sub hikari_sagasu()
{
Off(OUT_A+OUT_C);
OnRev(OUT_B); //アームを開ける
Wait(230);
lMax = 0;
OnFwd(OUT_C);
ClearTimer(0);
while(FastTimer(0) < 450) //約360º 回す
{
OnRev(OUT_A);
//一番明るい方向(ランプ向き)を探知して、時間を記録する
if(SENSOR_3 > lMax) {lMax = SENSOR_3; tMax = FastTimer(0);}
}
OnFwd(OUT_A);
OnRev(OUT_C);
Wait((563 - tMax)); //ランプの方向より約90º 回す(けるための位置)
}
//ける動作。アームの側面で押しながら、左に曲がる
sub keru()
{
Off(OUT_A+OUT_C);
OnFwd(OUT_B);
Wait(180);
Off(OUT_B);
OnRev(OUT_A+OUT_C);
Wait(80);
Off(OUT_A+OUT_C);
OnRev(OUT_B);
Wait(180);
Off(OUT_B);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(35);
OnFwd(OUT_C);
Wait(100);
OnRev(OUT_A);
Wait(200);
Off(OUT_A+OUT_C);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int i = 0;
for(i = 0; i < 3; i++)
{
OnFwd(OUT_B); //アームを開ける
Wait(180);
Off(OUT_B);
start kijun_ugoki; //線をたどる
until(SENSOR_1 == 1); //テニスボールを押すまで
stop kijun_ugoki;
hikari_sagasu(); //ランプの位置からロボットの位置を変える
keru(); //アームを使って、ボールをける
}
Off(OUT_A+OUT_C+OUT_B);
}
終了行:
[[2011a/A3/課題3右]]
#define THRESHOLD 40 //線をたどるための光センサーの敷居
int lMax = 0; //前向きのセンサーの一番高い値
int tMax = 0; //前向きのセンサーが一番高い値を見た時間
//黒い線をたどる関数
task kijun_ugoki()
{
while (true)
{
if (SENSOR_2 > THRESHOLD)
{
OnFwd(OUT_A);
Float(OUT_C);
}
else
{
Float(OUT_A);
OnFwd(OUT_C);
}
}
}
//ロボットをランプに向ける
sub hikari_sagasu()
{
Off(OUT_A+OUT_C);
OnRev(OUT_B); //アームを開ける
Wait(230);
lMax = 0;
OnFwd(OUT_C);
ClearTimer(0);
while(FastTimer(0) < 450) //約360º 回す
{
OnRev(OUT_A);
//一番明るい方向(ランプ向き)を探知して、時間を記録する
if(SENSOR_3 > lMax) {lMax = SENSOR_3; tMax = FastTimer(0);}
}
OnFwd(OUT_A);
OnRev(OUT_C);
Wait((563 - tMax)); //ランプの方向より約90º 回す(けるための位置)
}
//ける動作。アームの側面で押しながら、左に曲がる
sub keru()
{
Off(OUT_A+OUT_C);
OnFwd(OUT_B);
Wait(180);
Off(OUT_B);
OnRev(OUT_A+OUT_C);
Wait(80);
Off(OUT_A+OUT_C);
OnRev(OUT_B);
Wait(180);
Off(OUT_B);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(35);
OnFwd(OUT_C);
Wait(100);
OnRev(OUT_A);
Wait(200);
Off(OUT_A+OUT_C);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int i = 0;
for(i = 0; i < 3; i++)
{
OnFwd(OUT_B); //アームを開ける
Wait(180);
Off(OUT_B);
start kijun_ugoki; //線をたどる
until(SENSOR_1 == 1); //テニスボールを押すまで
stop kijun_ugoki;
hikari_sagasu(); //ランプの位置からロボットの位置を変える
keru(); //アームを使って、ボールをける
}
Off(OUT_A+OUT_C+OUT_B);
}
ページ名: