info-mindstorms

nxc tutorial



inleiding
het eerste programma
commentaar
constanten
repeat
variabelen
while
if-else
random
sensoren
nxt display
nxt knoppen
sub taken
meedere taken

sensoren

touchsensor

hier zien we de eerste sensor, de touch sensor. de sensor zit in poort 1, als je de sensor indrukt gaat de hij rijden.

task main()
{
SetSensorTouch(IN_1);
while (true)
{
if (SENSOR_1 == 1)
{
OnFwd(OUT_AC, 75);
}

}
}

als eerste gaan we de robot vertellen in welke poort de welke sensor zit, met de touchsensor doen we dat met SetSensorTouch(IN_1); IN_1 geeft aan dat hij in poort 1 zit. dan gaan we de sensor gebruiken, bij de if zeggen zat sensor 1 gelijk is aan 1, bij de touchsensor betekent deze waarde dat hij ingedrukt is.


until


task main()
{
SetSensorTouch(IN_1);
while(true)
{
until(SENSOR_1 == 1)
OnFwd(OUT_BC,100);
}
}

met until kunnen we de auto ergens op laten wachten, in dit geval laten we de hem wachten tot dat de touchsensor is ingedrukt.


lichtsensor


in dit programma laten we een auto met de lichtsensor over een lijn rijden. we gebruiken een constante omdat het licht intensiteit steeds veranderd.

#define THRESHOLD 40
task main()
{
SetSensorLight(IN_2);
while (true)
{
if (Sensor(IN_2) > THRESHOLD)
{
OnRev(OUT_C, 75);
Wait(100);
until(Sensor(IN_2) <= THRESHOLD);
OnFwd(OUT_AC, 75);
}
}
}

we zien ook weer wat nieuws, in het vorige programma gebruikten we SENSOR_1, nu gebruikten we Sensor(IN_2), je mag zelf weten wat je gebruikt


geluidsensor

dit programma laat een auto rijden als hij geluid hoort, hij stopt als hij opnieuw een geluid hoort.


#define geluids_grens 40
#define geluids_sensor SENSOR_2
task main()
{
SetSensorSound(IN_2);
while(true)
{
until(geluids_sensor > geluids_grens);
OnFwd(OUT_AC, 75);
Wait(300);
until(geluids_sensor > geluids_grens);
Off(OUT_AC);
Wait(300);
}
}


kleurensensor


in dit programma laten we ons autotje met de kleurensensor over een lijn rijden.

#define KLEURENSENSOR SENSOR_3
#define snelheid 75
task main()
{
SetSensorColorFull(IN_3);
while(true)
{
if(KLEURENSENSOR==6)
{
OnRev(OUT_C,snelheid);
OnFwd(OUT_B,snelheid);
}
if(KLEURENSENSOR!=6)
{
OnFwd(OUT_BC,snelheid);
}
}
}

opvallend in dit programmatje is dat we nu de waarde van de sensor aangeven met een constante, het is dus ook mogenlijk om op deze manier.


ultrasonesensor


hier zien we een voorbeeld met de ultrasone sensor, de auto rijd rechtdoor totdat hier iets ziet op minder dan 25 cm afstand, dan gaat hij draaien tot dat de afstand groter is dan 25 cm en begint hij weer overnieuw.

#define afstand 25
task main()
{
SetSensorLowspeed(S4);
while(true)
{
OnFwd(OUT_BC,100);
until(SensorUS(IN_4) < afstand);
OnRev(OUT_C,100);
OnFwd(OUT_B,100);
until(SensorUS(IN_4) > afstand);
OnRev(OUT_C,100);
OnFwd(OUT_B,100);
Wait(500);
}
}

belangerijk is dat je de ultrasoonsensor aangeef met SensorUS.