NXC 2011-12 B3-1sk-2T
Z MediaWiki SPŠ a VOŠ Písek
HW: 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
#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
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
#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
#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
#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
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); }