NXC 2011-12 B3-1sk-2T
Skočit na navigaci
Skočit na vyhledávání
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);
}