NXC 2011-12 B3-1sk-2T

Z MediaWiki SPŠ a VOŠ Písek
Skočit na navigaci Skočit na vyhledávání

HW: NXT

Robot NXT

SW: Bricx Command Center

Realizace: Froula Stanislav, Hadáčková Martina, Motyčka Arnošt

Úkoly:

  • Sestavte robota, napište program a vyzkoušejte ho pro tato zadání:

Pohyb vpřed

task main()
{
OnFwd(OUT_A, 75);
OnFwd(OUT_C, 75);
Wait(4000);
Off(OUT_AC);
}

Pohyb vpřed do vzdálenosti 1m

task main(){
RotateMotorEx(OUT_AC, 100,2000,0,true,true);
}

Pohyb vpřed ve čtyřúhelníku o straně cca 0,5m

task main()
{
repeat(4)
{
RotateMotor(OUT_AC, 100,500);
RotateMotor(OUT_C, 50,360);
}
Off(OUT_AC);
}

Robot jede rovně a zastaví na 60 cm vzdáleném místě označeném černou lepící páskou

Zapnutý senzor
#define THRESHOLD 60
task main()
{
SetSensorLight(IN_3);
OnFwd(OUT_AC, 50);
while (true)
{
if (Sensor(IN_3) > THRESHOLD)
{
OnFwd(OUT_AC, 50);
Wait(100);
until(Sensor(IN_3) <= THRESHOLD);
Off(OUT_AC);
}
}
}

Pohyb dokud nebude stisknutý dotykový senzor

Dotykový senzor
task main()
{
SetSensorTouch(IN_1);
while (true)
{
if (SENSOR_1 == 0)
{
OnFwd(OUT_AC, 50);
Wait(100);
until(SENSOR_1 == 1);
Off(OUT_AC);
}
}
}

Rozjezd na zvukový povel

Zvukový senzor
#define THRESHOLD 40
#define MIC SENSOR_2
task main()
{
SetSensorSound(IN_2);
while(true){
until(MIC > THRESHOLD);
OnFwd(OUT_AC, 75);
Wait(300);
until(MIC > THRESHOLD);
Off(OUT_AC);
Wait(300);
}
}

Robot jede ve čtyřúhelníku a zastaví se u počátečního bodu

task main()
{
repeat(4)
{
RotateMotor(OUT_AC, 100,500);
RotateMotor(OUT_C, 50,360);
}
Off(OUT_AC);
}

Jízda vpřed a pokud čidlo ultrazvuku zjistí překážku, robot se zastaví, kousek zacouvá, otočí se o 160° a celý cyklus pokračuje

Ultrazvukový senzor
#define NEAR 30 //cm
task main(){
SetSensorLowspeed(IN_4);
while(true){
OnFwd(OUT_AC,100);
while(SensorUS(IN_4)>NEAR);
RotateMotor(OUT_AC, -100,300);
Off(OUT_AC);
RotateMotor(OUT_C, 100,700);
}
}

Pohyb s pomocí čidla světla po čáře

Pohyb po čáře
#define THRESHOLD 50
task main()
{
SetSensorLight(IN_3);
OnFwd(OUT_AC, 100);
while (true)
{
if (Sensor(IN_3) > THRESHOLD)
{
OnFwd(OUT_A, 100);
Off(OUT_C);
until(Sensor(IN_3) < THRESHOLD);
OnFwd(OUT_C, 100);
Off(OUT_A);
}
}
}

Start ve vzdálenosti 60 cm od černé linie. Robot najde dráhu a sleduje ji

#define THRESHOLD 40
task main()
{
SetSensorLight(IN_3);
if (Sensor(IN_3) > THRESHOLD)
{  OnFwd(OUT_AC, 100);
 until(Sensor(IN_3) < THRESHOLD);
while (true)
{
if (Sensor(IN_3) > THRESHOLD)
{
OnFwd(OUT_A, 80);
OnFwd(OUT_C, 0);
until(Sensor(IN_3) <= THRESHOLD);
OnFwd(OUT_C, 80);
OnFwd(OUT_A, 0);
}
}
}
}

Naučte robota šplhat přes minimálně 2,5 cm tlustou knihu a nakombinujte různá čidla pro pohyb robota

Upravený robot
Zdolání překážky
task move()
{
SetSensorTouch(IN_1);
SetSensorTouch(IN_2);
while (true)
{
if (SENSOR_2 == 0)
{
OnFwd(OUT_A, 100);
OnFwd(OUT_C, 100);

until(SENSOR_2 == 1);
OnFwd(OUT_C, 50);
OnFwd(OUT_A, 50);
}
}
}
task move2()
{
SetSensorTouch(IN_1);
SetSensorTouch(IN_2);
while (true)
{
 if (SENSOR_1 == 0)
{
OnFwd(OUT_B, -100);
until(SENSOR_1 == 1);
OnFwd(OUT_B, -50);
}
}
}
task main()
{
Precedes(move, move2);
}


Robot najde předmět, uchopí a přiveze