2004/B1/28班練習問題/光
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2004/B1/28班練習問題]]
*光を追いかけるロボット(未完成) [#o1cc6ee5]
task main(){
SetSensor(SENSOR_2, SENSOR_LIGHT); //光センサー準備
int a,b,time; //関数準備
a = 0; //光の強さ用関数
b = 0; //回転方向用関数
time = 0; //回転時間用関数
ClearTimer(0);
while(Timer(0) < 32){ //32の値(回転時間)は調整が必要
OnFwd(OUT_A);
OnRev(OUT_C);
if(SENSOR_2 > a){
a = SENSOR_2; //今までで一番強かった光の値
time = Timer(0); //上の光を観測した時間
}
}
Off(OUT_A + OUT_C);Wait(100);
ClearTimer(0);
while(Timer(0) < time){ //timeの時間だけ回す
OnFwd(OUT_A);
OnRev(OUT_C);
}
Off(OUT_A + OUT_C);Wait(100);
while(true){
OnFwd(OUT_A + OUT_C); //とりあえず前進
if(SENSOR_2 < a && b == 0){ //光が遠のいた&直前に左に回ったまたは初めて回る
until(a <= SENSOR_2 || Timer(0) == 3){ //光を見つけるか、指定時間経つまで回る
OnRev(OUT_A);
}
Off(OUT_A + OUT_C);
if(a <= SENSOR_2){ //光が見つかったら直進する
b = 0;
a = SENSOR_2;
}else{ //見つからなかったら右に回る
b = 1;
}
if(b == 1){ //左に回って見つからなかった
until(a <= SENSOR_2 || Timer(0) == 3){
OnRev(OUT_C);
OnFwd(OUT_A);
}
if(a <= SENSOR_2){
b - 1;
a = SENSOR_2;
}else{
Off(OUT_A + OUT_C);
break;
}
}
}
if(SENSOR_2 < a && b == 1){ //直前に右に回ったとき
until(a <= SENSOR_2 || Timer(0) == 3){
OnRev(OUT_C);
}
Off(OUT_A + OUT_C);
if(a <= SENSOR_2){
a = SENSOR_2;
b = 1;
}else{
b = 0;
}
if(b == 0){
until(a <= SENSOR_2 || Timer(0) == 3){
OnRev(OUT_A);
OnFwd(OUT_C);
}
if(a <= SENSOR_2){
b = 0;
a = SENSOR_2;
}else{
Off(OUT_A + OUT_C);
break;
}
}
}
}
}
うまく動かなかった…~
制作者&文責 蓮井
終了行:
[[2004/B1/28班練習問題]]
*光を追いかけるロボット(未完成) [#o1cc6ee5]
task main(){
SetSensor(SENSOR_2, SENSOR_LIGHT); //光センサー準備
int a,b,time; //関数準備
a = 0; //光の強さ用関数
b = 0; //回転方向用関数
time = 0; //回転時間用関数
ClearTimer(0);
while(Timer(0) < 32){ //32の値(回転時間)は調整が必要
OnFwd(OUT_A);
OnRev(OUT_C);
if(SENSOR_2 > a){
a = SENSOR_2; //今までで一番強かった光の値
time = Timer(0); //上の光を観測した時間
}
}
Off(OUT_A + OUT_C);Wait(100);
ClearTimer(0);
while(Timer(0) < time){ //timeの時間だけ回す
OnFwd(OUT_A);
OnRev(OUT_C);
}
Off(OUT_A + OUT_C);Wait(100);
while(true){
OnFwd(OUT_A + OUT_C); //とりあえず前進
if(SENSOR_2 < a && b == 0){ //光が遠のいた&直前に左に回ったまたは初めて回る
until(a <= SENSOR_2 || Timer(0) == 3){ //光を見つけるか、指定時間経つまで回る
OnRev(OUT_A);
}
Off(OUT_A + OUT_C);
if(a <= SENSOR_2){ //光が見つかったら直進する
b = 0;
a = SENSOR_2;
}else{ //見つからなかったら右に回る
b = 1;
}
if(b == 1){ //左に回って見つからなかった
until(a <= SENSOR_2 || Timer(0) == 3){
OnRev(OUT_C);
OnFwd(OUT_A);
}
if(a <= SENSOR_2){
b - 1;
a = SENSOR_2;
}else{
Off(OUT_A + OUT_C);
break;
}
}
}
if(SENSOR_2 < a && b == 1){ //直前に右に回ったとき
until(a <= SENSOR_2 || Timer(0) == 3){
OnRev(OUT_C);
}
Off(OUT_A + OUT_C);
if(a <= SENSOR_2){
a = SENSOR_2;
b = 1;
}else{
b = 0;
}
if(b == 0){
until(a <= SENSOR_2 || Timer(0) == 3){
OnRev(OUT_A);
OnFwd(OUT_C);
}
if(a <= SENSOR_2){
b = 0;
a = SENSOR_2;
}else{
Off(OUT_A + OUT_C);
break;
}
}
}
}
}
うまく動かなかった…~
制作者&文責 蓮井
ページ名: