2001/2002-es szemeszter 2. beadandója.
Feladat:
Egy "kutya" építése, mely képes kikerülni az elötte levő akadályokat.
Megoldás:
Egy négylábú robottal oldottuk meg.A lábait motorokkal hajtottuk meg.
A lenti ábrán látni lehet a lábak és a motorok kapcsolatát.
A kuya robot elején egy nyomásérzékelő van. Ha a kutya nekimegy valaminek,
akkor hátrál egy kicsit oldalasan kb. 10 centit, és próbál újra előremenni.
Így képes minden akadályt kikerülni, ami elé kerül.
Tolatás közben egy sziréna szól a kutya hátán.
A program:
#define HALAD OUT_A
#define FOROG OUT_B
#define SZIRENA OUT_C
#define UTKOZ SENSOR_1
#define ELEG SENSOR_2
#define MASIK 1000
// 0 - jobbra
// 1 - balra
// jobbraban kell inditani
int dir=0;
sub Init()
{ if(ELEG!=0)
{SetPower(FOROG,7);
OnFwd(FOROG);
Wait(100);
Off(FOROG);}
if(ELEG!=0)
{SetPower(FOROG,7);
OnRev(FOROG);
Wait(100);
Off(FOROG);}
}
sub Forog_jobbra()
{ if (dir==0)
{SetPower(FOROG,7);
OnFwd(FOROG);
while (ELEG!=0) {}
while (ELEG==0) {}
Off(FOROG);
dir=1;
}
else
{}
}
sub Forog_balra()
{ if (dir==1)
{SetPower(FOROG,7);
OnRev(FOROG);
while (ELEG!=0) {}
while (ELEG==0) {}
Off(FOROG);
dir=0;
}
else
{}
}
sub Megy_elore()
{ SetPower(HALAD,7);
OnFwd(HALAD);
}
sub Megy_hatra()
{ SetPower(HALAD,7);
OnRev(HALAD);
}
sub Szirenazik()
{ SetPower(SZIRENA,7);
OnFwd(SZIRENA);
}
task main()
{ SetSensor(UTKOZ,SENSOR_TOUCH);
SetSensor(ELEG,SENSOR_TOUCH);
int i=0;
Init();
while (true)
{
Megy_elore();
while (UTKOZ==0)
{
if (++i == 2000)
{ if (dir==0){Forog_jobbra();}
else {Forog_balra();}
i=0;
}
}
Megy_hatra();
i=0;
if (dir==1){Forog_balra();}
else {Forog_jobbra();}
Szirenazik();
Wait(600);
Megy_elore();
if (dir==1){Forog_balra();}
else {Forog_jobbra();}
Off(SZIRENA);
}
Off(HALAD);
}
A robotról néhány videó:
1.videó
2.videó
3.videó
4.videó
készítették :
Kristóf Imola
Lustig Péter
Ajtai Róbert
Nagy Barnabás