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

nxt display


u zult het al gemist hebben, als u een programmatje gemaakt hebt kun je de variabelen en de waardes die de sensoren geven niet zien, gelukkig kunt u die wel laten zien op de display van de nxt.

dit programmatje voorkomt dat ons autotje tegen iets aan rijd, verder slaat hij op hoeveel dingen hij gezien heeft.

#define afstand 25
int opstakels, ultrasoon_sensor;
task main()
{
SetSensorUltrasonic(IN_4);
while(true)
{
if(SensorUS(IN_4)< afstand)
{
OnFwd(OUT_B,100);
OnRev(OUT_C,100);
until(SensorUS(IN_4)>afstand)
OnFwd(OUT_B,100);
OnRev(OUT_C,100);
Wait(1000);
opstakels += 1;
}
if(SensorUS(IN_4)>afstand)
{
OnFwd(OUT_BC,100);
}
ClearScreen();
TextOut(0, LCD_LINE1,"opstakels:");
NumOut(0, LCD_LINE2, opstakels);
TextOut(0, LCD_LINE4,"ultarasoon sensor:");
ultrasoon_sensor = SensorUS(IN_4);
NumOut(0, LCD_LINE5, ultrasoon_sensor);
}
}

we zien nu het commando textout. hiermee kunnen we tekst op het beeldscherm zetten. we gaan dit stukje eens beter bekijken, het eerste cijfer wat je ziet betekent het inspringen op de x as, op de tweede plaats zien we de lijn, de nxt display heeft 8 lijnen, je zet het neer als LCD_LINE en dan de nummer van de lijn, daarna krijgen we de tekst, die zet je tussen aanhalingstekens. het zelfde werkt het met NumOut, die gebruiken we voor een getal. let er op dat als je een variabele wil laten zien dat je dezen niet tussen aanhallingstekens moet zeten. hierna zien we ClearScreen(): dit betekent dat het hele scherm word leeg gemaakt. met het commando ClearLine("lijn"); woord er maar 1 lijn leeggemaakt. iets wat je op het beeldscherm neerzet blijft daar de hele tijd staan.

dit is een voorbeeld van een bekent probleem: eerst geeft een sensor de waarde 100 aan, later geeft hij 10 aan, Maar de 3e nul blijft staan en er blijft toch 100 te staan.


meer comando's

hier volgen nog meer comando's voor de nxt display.
vierkant:
RectOut("x as"," y as", "breedte", "hoogte");
circel:
CircleOut("x as", "y as", "radius(straal)");
lijn:
LineOut("1e x as", "1e y as", "2e x as", "2e y as");
punt:
PointOut("x as", "y as");

task main()
{
while(true)
{
RectOut(2, 2, 94, 59);
CircleOut(50, 30, 25);
CircleOut(60, 40, 5);
CircleOut(40, 40, 5);
CircleOut(50, 20, 7);
PointOut(50, 35);
Wait(1000);
ClearScreen();
RectOut(2, 2, 94, 59);
CircleOut(50, 30, 25);
LineOut(60,20, 40, 20);
LineOut(55, 35, 62, 42);
LineOut(55,42, 62, 35);
LineOut(35, 35, 42, 42);
LineOut(35, 42, 42, 35);
Wait(1000);
ClearScreen();
}
}