- 追加された行はこの色です。
- 削除された行はこの色です。
*Nori の学習ノート [#j0e44e7b]
製作途中のプログラム等
製作途中のプログラムや改良前のプログラム等
&aname(kadai2-1-1);
-課題2-1のプログラム初期バージョン
作成日: 2006/06/06
====================
#define THRESHOLD 40 //閾値を定義
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1が光センサであることを宣言
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサ2がタッチセンサであることを宣言
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3が光センサであることを宣言
Wait(100); //すぐに動き出さないように待機
while(true) //以下無限ループ
{
if((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD)) //センサ1,3共に黒線を認識した場合
{ //直進する
OnFwd(OUT_A+OUT_C);
}
if((SENSOR_1>=THRESHOLD)&&(SENSOR_3<THRESHOLD)) //センサ3のみが黒線を認識した場合
{ //右モータのみを正回転
Off(OUT_C);
OnFwd(OUT_A);
}
if((SENSOR_1<THRESHOLD)&&(SENSOR_3>=THRESHOLD)) //センサ1のみが黒線を認識した場合
{ //左モータのみを正回転
Off(OUT_A);
OnFwd(OUT_C);
}
if(SENSOR_2==1) //センサ2が押されたら、0.5秒後退し、その後1.8秒回転して方向転換
{
OnRev(OUT_A+OUT_C);
Wait(50);
OnFwd(OUT_C);
Wait(180);
}
}
}
&aname(kadai2-1-1);
-課題2-2のプログラム初期バージョン
作成日:2006/06/07
====================
#define THRESHOLD 40
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1が光センサであることを宣言
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサ2がタッチセンサであることを宣言
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3が光センサであることを宣言
Wait(100); //すぐに動き出さないように待機
while(true) //以下無限ループ
{
if((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD)) //センサ1,3共に黒線を認識した場合
{ //直進する
OnFwd(OUT_A+OUT_C);
}
if((SENSOR_1>=THRESHOLD)&&(SENSOR_3<THRESHOLD)) //センサ3のみが黒線を認識した場合
{ //右モータのみを正回転
Off(OUT_C);
OnFwd(OUT_A);
}
if((SENSOR_1<THRESHOLD)&&(SENSOR_3>=THRESHOLD)) //センサ1のみが黒線を認識した場合
{ //左モータのみを正回転
Off(OUT_A);
OnFwd(OUT_C);
}
if(SENSOR_2==1) //センサ2が押されたら、右に移動し前方のロボットを避ける
{
Off(OUT_A+OUT_C);
OnRev(OUT_A);
Wait(150);
OnFwd(OUT_A+OUT_C);
Wait(150);
Off(OUT_C);
Wait(150);
OnFwd(OUT_C);
Wait(150);
Off(OUT_C);
Wait(150);
OnFwd(OUT_C);
}
}
}
-課題3の初期のプログラム(光を追いかけるだけ)
作成日 2006/06/30
==================
#define TURN 300 //1回転にかかる時間を定義
task main()
{
int lmax=0,tmax=0; //整数型変数lmax,tmaxを宣言し0を代入
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1が光センサであることを宣言
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3が光センサであることを宣言
Wait(100); //すぐに動き出さないように待機
while(true) //以下無限ループ
{
lmax=SENSOR_1; //lmaxにセンサ1の値を代入
OnFwd(OUT_A);OnRev(OUT_C); //回転開始
ClearTimer(0); //タイマ0をクリア
while(FastTimer(0)<=TURN) //1回転する
{
if(lmax<SENSOR_1)
{ //センサ1の値がlmaxより大きいなら
lmax=SENSOR_1; //lmaxにセンサ1の値を代入し,
tmax=FastTimer(0); //tmaxにタイマ0の値を代入
}
}
Off(OUT_A+OUT_C); //回転停止
OnFwd(OUT_C);OnRev(OUT_A);
Wait(TURN-tmax); //(TURN-tmax)*10^-2 秒間逆回転
Off(OUT_A+OUT_C);
Wait(20);
while((SENSOR_1>=(lmax-20))||(SENSOR_3>=(lmax-20))) //センサ1,センサ3の値がlmax-20以上の間光を追いかける
{
if(SENSOR_1==SENSOR_3) //センサ1とセンサ3の値が等しければ直進
{OnFwd(OUT_A+OUT_C);}
if(SENSOR_1<SENSOR_3) //センサ1の値がセンサ3より小さければ左へ
{Off(OUT_C);OnFwd(OUT_A);}
if(SENSOR_1>SENSOR_3) //センサ1の値がセンサ3より大きければ右へ
{Off(OUT_A);OnFwd(OUT_C);}
}
Off(OUT_A+OUT_C);
}
}
[[2006a/C4 に戻る>2006a/C4]]