Az NXT-G programozási nyelv

Típusok, típuskonstrukciók

1. Elemi típusok

A nyelvben három elemi, klasszikus értelemben vett típus található:

Ezeket a változókat a programjaink változóihoz tudjuk beállítani, de akár saját nevű típust is létrehozhatunk.
Bővebben a változókról a változók leírásánál
Bővebben a típusok grafikus megjelenítéséről a paraméterátadásnál

2. Akció blokkok

Ezekkel a blokkokkal többnyire output jellegű műveleteket végezhetünk.
Minden blokk leírásánál szerepel a data hub-jának leírása is, ezekről részletesebben a data hub szekcióban lehet olvasni.

A legtöbb szenzorból létezik *-gal ellátott nevű is, melyek külső gyártmányú hardverekhez használhatóak. Ezeket ebben a leírásban most nem részletezzük.

Kijelző blokk

A kijelző blokkal az NXT kocka kijelzőjére rajzolhatunk vagy írhatunk ki információkat.
display01

  1. Ez az ikon a kijelző inputját mutatja, lehet kép, szöveg, rajz, vagy törlés.
  2. Az értékek dinamikusan változtathatóak a data hub segítségével.


display02
display03
display04

  1. Kiválasztható, hogy milyen típusú információt mutasson a kijelző.
  2. A "Clear" mezővel törölhetjük a kijelzőt.
  3. A fájl tulajdonsággal megadhatunk külső fájlból elérhető képet. A fejlesztőkörnyezet lehetőséget biztosít a robot "Image Files" nevű mappájában lévő képek böngészésére.
  4. Egérrel mozgathatóak a kirajzolandó információk a kis kijelzőn, de kézzel is megadhatjuk a kezdő X,Y koordinátákat.
  5. A szöveg (Text) értékkel a kijelzett szöveget állíthatjuk be.
  6. Szöveges kiíratásnál a sor száma is megadható, ahova a szövegünket ki szeretnénk iratni. X,Y koordinátával is megadható, itt 0,0 a bal felső sarkot jelenti.
  7. A típus (Type) mezőben beállíthatjuk, mit szeretnénk rajzolni. Ez lehet pont, vonal, vagy kör.
  8. Pont rajzolása esetén X,Y a pont helyét jelöli, vonal rajzolásánál két dobozban állíthatjuk be az X,Y-t, így a két pont között fog vonalat húzni, kör rajzolása esetén pedig középpont és sugár alapján teszi ezt.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
action Akció Number 0 - 5 0 = Kép, 1 = Szöveg, 2 = Pont, 3 = Vonal, 4 = Kör, 5 = Rendszerkijelző visszaállítása  
clear Törlés Logic True/False True = Kijelző törlése
False = Ne töröld a kijelzőt
 
fname Fájlnév Text Maximum 15 karakter A képet tartalmazó fájl neve Akció nem Kép (Image)
text Szöveg Text   Szöveg Akció nem szöveg (Text)
addx X Number 0 - 99 X koordináta  
addy Y Number 0 - 63 Y koordináta  
add_x Végpont X Number 0 - 99 Utolsó X koordináta (Vonal esetén) Akció nem vonal (Line)
add_y Végpont Y Number 0 - 63 Utolsó Y koordináta (Vonal esetén) Akció nem vonal (Line)
radius Sugár Number 0 - 120 Sugár (Kör esetén) Akció nem kör (Circle)

Motor blokk (Move)

Ennek a blokknak a segítségével tudunk a programunkba motormozgatási parancsokat elhelyezni. Meghatározható, hogy egy-egy motor hogyan mozogjon, de az egyszerűség kedvéért több motornak is kiadhatunk parancsokat egy motor blokkal, például köríves előrehaladást, vagy hogy milyen messzire menjen.
move01

  1. A jobb felső sarokban lévő betűk mutatják, mely portokhoz tartozó motorokat fogja a blokk vezérelni.
  2. Ez az ikon a robot mozgási irányát mutatja.
  3. Ez az ikon a mozgási sebességet mutatja. A robot sebességét persze más tényezők is befolyásolhatják, például a felület típusa vagy hogy lejtőn felfelé, vagy lefelé halad-e.
  4. Ez az ikon azt mutatja, hogy a mozgást végtelenre, fokok szerint, fordulatok szerint, vagy másodpercek szerint állítottuk-e be.

move02
  1. Ez az ikon az irányra vonatkozó "stop" szimbólumot mutatja, ez minden motort le fog állítani.

move03

  1. A kiválasztott motorokhoz tartozó portokat állíthatjuk be. Ha egyszerre több motort választunk ki (mint a képen B-t és C-t), a motorok szinkronizálva lesznek, tehát előre és hátra is ugyanolyan sebességgel mennek majd. Ha mindhármat kijelöljük, alapértelmezetten a B és a C lesz szinkronizálva.
  2. A motor iránya beállítható előre, hátra, vagy megállásra.
  3. Ha két motort használunk meghajtásra, akkor ezen a felületen lehet beállítani a mozgás irányát.
  4. Akár a csúszkával, akár a szövegdobozban megadható a sebesség.
  5. A "Duration" legördülő menüben kiválaszthatjuk a mozgási feltételt, ami lehet végtelen, másodperc- , fordulat- , vagy fok alapú. Ezekkel a beállításokkal szabályozható, mennyit haladjon a robot.
  6. Kiválasztható, hogy a motorok a mozgás végén fékezzenek-e, vagy csak álljanak meg. A fékezés beállításával a robot visszagördülése, vagy precízebb megállása érhető el, ám ezzel bizonyos szinten terheljük a motorjainkat, illetve több áramra van szükségük, így hamarabb lemerül a robot.
  7. A visszajelző dobozok számon tartják hány fokot vagy fordulatot mentem a motorok. A reset gombbal ezek nullázhatóak.

A motor blokk különböző csatlakozóinak leírása a motor data hub-jában:
Részletes leírás a data hub-okról paraméterátadásnál.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
port Port Number 1 - 3 1 = A, 2 = B, 3 = C  
direction Irány Logic True/False True = Előre
False = Hátra
 
action Akció Number 0 - 2 0 = Konstans
1 = Felfutó
2 = Lefutó
Hajtási idő = Végtelen vagy másodperc szerinti
action Sebesség Number 0 - 100    
motorpower Motorsebesség szabályozás Logic True/False    
duration Hajtási idő Number 0 - 2147483647 A hajtási idő típusától függ:
Fok/Fordulatok = Fok,
Másodperc = Másodperc
Hajtási idő = Végtelen
waitfcompl Befejezésre várakozás Logic True/False   Hajtási idő = Végtelen (mindig False), Másodperc (mindig True)
nextact Következő akció Logic True/False True = Fék
False = Gördülés
Hajtási típus = Végtelen, or Várakozás befejezésre = False
dirout Irány kimenet Logic True/False A blokk utolsó futtatásakor használt motorirány.
True = Előre
False = Hátra
 
degreesout Fok kimenet Number 0 - 2147483647 Az utolsó futtatáskor forgatott fokok száma.  

Üzenetküldő blokk

Az üzenetküldő blokk segítségével a robot Bluetooth eszközéről tudunk üzeneteket küldeni akár több robot felé is. A blokk testvére az üzenetfogadó blokk a szenzor blokkoknál.
sendmessage01

  1. Az üzenet címzettjeként megjelölt másik NXT sorszáma.
  2. Az üzenet típusa illetve az üzenet tartalma dinamikusan is megadható.


sendmessage02

  1. Kiválasztható a címzett NXT.
  2. Kiválasztható az üzenet típusa.
  3. Megadható előre az üzenet tartalma típusnak megfelelően.
  4. Kiválasztható a címzett NXT-n a célpont postaláda.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
connect Kapcsolat Number 0 - 3 Célpont kapcsolat, ahova küldje az üzenetet. Ha 0-t választunk, akkor a "Slave" NXT a "Master" NXT-nek fog küldeni.  
mailbox Postaláda Number 1 - 10 A fogadó célként megjelölt postaládája  
text Szöveg Text Maximum 58 karakter A küldendő üzenet Üzenet típusa nem szöveg (Text)
number Szám Number -2147483648 - 2147483647 A küldendő üzenet Üzenet típusa nem szám (Number)
logic Logikai Logic True/False A küldendő üzenet Üzenet típusa nem logikai (Logic)

Hanglejátszó blokk

Ezzel a blokkal a robot hangszóróját tudjuk használatban venni.
sound01

  1. Ez az ikon azt mutatja, hogy a hang blokk fájlból, vagy hangjegyet fog-e játszani.
  2. Ez az ikon azt mutatja, hogy a hang blokk hanglejátszást indítani, vagy megállítani fog-e.
  3. Ez az ikon azt mutatja, mekkora hangerőre van állítva a hangblokk.
  4. A blokk data hub-jába behúzhatóak adat drótok máshonnan, így módosítva a blokk viselkedését.

sound02
sound03

  1. Kiválasztható, hogy hangfájlt, vagy hangjegyet játsszon-e le a blokk.
  2. Kiválasztható, hogy a blokk lejátszást indítson, vagy leállítson.
  3. A csúszkával vagy a szövegdobozzal beállítható a blokk hangereje.
  4. Ha hangfájl lejátszását választottuk, akkor a következő beállításokra van lehetőség:
  5. A "Function" tulajdonsággal beállítható, hogy ismételten játssza-e le a fájlt.
  6. A "File" tulajdonsághoz kell beállítanunk a lejátszandó hangfájlt a roboton lévő fájlok közül.
  7. Ha a "Wait for Completion" be van kipálva, akkor a program a hangblokkról addig nem megy tovább, amíg a teljes lejátszás véget nem ért.
  8. Ha hangjegy lejátszása lett kiválasztva, a következők választhatóak:
  9. A hangjegy tulajdonság segítségével egy adott hangot tudunk lejátszani, melynek kiválasztásánál nagy segítséget nyújt a grafikus zongora.
  10. Ha a "Wait for Completion" be van kipálva, akkor a program a hangblokkról addig nem megy tovább, amíg a teljes lejátszás véget nem ért.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
action Akció Number 0 - 1 0 = Hangfájl, 1 = Hang  
fname Fájlnév Text 15 karakter maximum Lejátszandó hangfájl neve Akció = Hang
freq Hang frekvencia Number 0 - 65535 Hang frekvencia Hertz-ben. Az NXT belső hangszórója körülbelül 264 és 4000 Hertz közötti hangok kiadására képes. Akció = Hangfájl
control Vezérlés Number 0 - 1 0 = Lejátszás, 1 = Stop  
vol Hangerő Number 0 - 100 Hangerő. Megjegyzés: valójában csak 5 hangszint van, 0, 25, 50, 76, és 100. Az ezek közötti számokra kerekítés történik. Akció = Hangfájl
duration Hossz Number 0 - 65535 Hanghossz milliszekundumban Akció = Hangfájl

Lámpa blokk

A lámpa (Color Lamp) blokkal a színérzékelő szenzor beépített lámpáját tudjuk kezelni. A lámpa ki-be kapcsolásához két blokk kell, az egyikkel bekpacsolhatjuk, majd a következővel a program futása során kikapcsolhatjuk.
lamp01

  1. A jobb felső sarokban lévő szám jelzi, hogy melyik bemeneti NXT portot használja a blokk. A konfigurációs panelen állítható.
  2. Ez az ikon mutatja, hogy a lámpa kikapcsolása, vagy bekapcsolása történik a blokk által, és hogy milyen színű, ha be van kapcsolva.
  3. A Data Hub segítségével ezek a paraméterek kívülről is megadhatóak.

A lámpa blokk konfigurációs panelje:
lamp02

  1. Kiválasztható, melyik porton van a lámpa elhelyezve. Alapbeállításként a harmadik port él.
  2. A lámpa kapcsolásának opciói.
  3. A három lehetőség a lámpa színére: vörös, zöld vagy kék.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
port Port Number 1 - 4 Az eszköz fizikai portja, amihez csatlakoztatjuk Az érték nincs az [1..4] intervallumban
fname Akció Logikai On/Off True = On, False = Off  
freq Lámpa színe Number 0 - 2 0 = Vörös, 1 = Zöld, 2 = Kék Ha az akció érték Off, vagy a szín kívül van a [0..2] intervallumon

3. Szenzor blokkok

A szenzor blokkok alapvetően inputként szolgálnak. A szenzorok segítségével az NXT robot képes környezetének jeleit érzékelni, azokra reagálni.
Érdekes nyelvi megfontolás, hogy az NXT-G rendelkezik előre elkészített várakoztató blokkal (Wait Block), melyhez ezen szenzorok bármelyikét beállíthatjuk, így megkíméli a programozót az értékvizsgáló végtelen ciklusok készítésétől. Erről részletesebben a várakoztató blokknál. Ehhez hasonlóan készítették el az elágazás különböző változatait is, melyről részletesebben az elágazás blokknál lehet olvasni.

Fényszenzor (Light)

Ezzel a blokkal a robot fényszenzorát tudjuk használatban venni. Fontos megemlíteni, hogy nem szín, csak fényszenzorról van szó, tehát fényerősséget tudunk mérni. A szenzort beállíthatjuk például úgy, hogy adott küszöb fölött adjon ki True értéket, egyébként legyen False. Természetesen itt is figyelnünk kell rá, hogy a programban a valóságnak megfelelő portot állítsunk be a szenzornak, de legalábbis ellenőrizzük le az automatán beállítottat.
A fényszenzor az egyszerű érzékelés mellett rendelkezik egy saját lámpával, így sötét környezetben is képesek vagyunk megmondani a tereptárgyakról, hogy milyen árnyalatúak, így például meg tudunk valósítani egy vonalkövetést a robot aljára szerelt fényszenzor segítségével.
light01

  1. Kiválasztható, mely porton van a szenzor elhelyezve.
  2. A vonalas jelzőábra mutatja, hogy hova van beállítva a True küszöb.
  3. Ez az ikon akkor szerepel itt, ha a "Generate Light" mezőt bepipáltuk, azaz fényt is szolgáltat a szenzor.
  4. A visszajelző dobozban a felcsatlakoztatott NXT-n tudjuk tesztelni a szenzort.

light02

  1. Kiválasztható, mely porton van a szenzor elhelyezve.
  2. A csúszkával, vagy a szövegdobozzal beállíthatjuk a küszöböt, illetve azt, hogy a küszöb vizsgálatakor kisebb vagy nagyobb relációt használjon-e a blokk.
  3. A "Generate light" kipipálása után a szenzor használatkor fényt is ki fog bocsátani.
  4. A visszajelző dobozban a felcsatlakoztatott NXT-n tudjuk tesztelni a szenzort.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
port Port Number 1 - 4 1 = Port 1, 2 = Port 2, 3 = Port 3, 4 = Port 4  
triggerp Küszöbérték Number 0 - 100 A viszonyítási szám  
greater Kisebb / Nagyobb Logic True/False A hasonlításhoz használt reláció.
True = Nagyobb, False = Kisebb
 
genlight Világítás Logic True/False Meghatározza, hogy a szenzor saját LED-je világítson-e, vagy sem.  
yesno Igen / Nem Logic True/False Az összehasonlítás eredménye  
intensity Intenzitás, fényerő Number 0 - 100 A szenzorról leolvasott, skálázott érték.  
rawdata Nyers érték Number 0 - 1024 Nyers, skálázatlan szenzorról olvasott érték.  

NXT gomb blokk

Az NXT kockán található gombokat kezelhetjük a programunkon belülről a gomb blokkal.
btn01

  1. Ez az ikon mutatja, melyik gombot kezeli a blokk.
  2. A blokk data hub-ja automatikusan kinyílik, amikor a munkafelületre helyezzük.

btn02

  1. Kiválasztható, hogy melyik gombot kezelje a blokk.
  2. Az ütközött (Bumped) opció esetén akkor váltódik ki True jelzés, ha a gombot gyorsan lenyomják és felengedik.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
btn Gomb Number 1 - 3 1 = Jobb
2 = Bal
3 = Választó
 
act Akció Number 0 - 2 0 = Lenyomva
1 = Felengedve
2 = Ütközött
 
yesno Igen / Nem Logic True/False Az összehasonlítás eredménye  

Üzenetfogadó blokk

Az NXT kockán található Bluetooth eszközt kezelhetjük a programunkon belülről ezzel a blokkal. Egészen pontosan üzenetek fogadását valósítja meg, amiket többféleképpen is fel tudunk dolgozni.
recv01

  1. A blokk data hub-ja automatikusan kinyílik, amikor a munkafelületre helyezzük. Csak egy kimenő csatlakozó van, de ennek a típusát állíthatjuk attól függően hogy milyen típusként szeretnénk feldolgozni a bejött adatot.

recv02

  1. A három elemi típusból választhatunk, hogy miként dolgozzunk fel az üzeneteket.
  2. A bejövő adatokat automatikusan hasonlíthatjuk is valamihez.
  3. Kiválasztható, melyik postalábáda tárolja le a robot az üzenetet, hogy azokat később is fel tudjuk dolgozni.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
mailbox Postaláda(Mailbox) Number 1 - 10 Az üzenet céljaként megjelölt postaláda  
textin Szöveg input Text Maximum 58 karakter Összehasonlításhoz érték Üzenet típusa nem szöveg (Text)
numberin Szám input Number -2147483648 - 2147483647 Összehasonlításhoz érték Üzenet típusa nem szám (Number)
logicin Logikai input Logic True/False Összehasonlításhoz érték Üzenet típusa nem logikai (Logic)
msgrecvd Fogadott üzenet Logic True/False True, ha volt üzenet (azaz a postaláda üres).  
yesno Igen / Nem Logic True/False Összehasonlítás eredménye  
textout Szöveg kimenet Text Maximum 58 karakter Üzenet tartalma Üzenet típusa nem szöveg (Text)
numout Szám (Number) kimenet Number -2147483648 - 2147483647 Üzenet tartalma Üzenet típusa nem szám (Number)
logicout Logikai kimenet Logic True/False Üzenet tartalma Üzenet típusa nem logikai (Logic)

Hangszenzor (Sound)

Az NXT hangszerzora tulajdonképpen egy mikrofon, melynek segítségével képesek vagyunk decibelben mérni hangerősséget. A fényszenzorhoz hasonlóan itt is beállíthatunk egy küszöbértéket, mely átlépésénél a szenzor egy True jelet fog küldeni.
sound01

  1. A szám jelzi, hogy mely porton van a szenzor elhelyezve.
  2. A vonalas jelzőábra mutatja, hogy hova van beállítva a True küszöb.
  3. A visszajelző dobozban a felcsatlakoztatott NXT-n tudjuk tesztelni a szenzort.

sound02

  1. Kiválasztható, mely porton van a szenzor elhelyezve.
  2. A csúszkával, vagy a szövegdobozzal beállíthatjuk a küszöböt, illetve azt, hogy a küszöb vizsgálatakor kisebb vagy nagyobb relációt használjon-e a blokk.
  3. A visszajelző dobozban a felcsatlakoztatott NXT-n tudjuk tesztelni a szenzort.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
port Port Number 1 - 4 1 = Port 1, 2 = Port 2, 3 = Port 3, 4 = Port 4  
trigger Küszöbérték Number 0 - 100 A viszonyítási szám  
greater Kisebb / Nagyobb Logic True/False A hasonlításhoz használt reláció.
True = Nagyobb, False = Kisebb
 
dba dBA Logic True/False True = dBA mód
False = dB mód
 
yesno Igen / Nem Logic True/False Az összehasonlítás eredménye  
sndlvl Hangszint Number 0 - 100 A szenzorról leolvasott, skálázott érték.  
rawdata Nyers érték Number 0 - 1024 Nyers, skálázatlan szenzorról olvasott érték.  

Érintés szenzor (Touch)

A robothoz adott érintésszenzor tulajdonképpen csak egy gomb, így programozási szinten egy True/False értéket tudunk a szenzorból kinyerni.
touch01

  1. A szám azt mutatja, hogy az NXT mely portjára van kötve a szenzor. Ezt manuálisan is állíthatjuk, de az új firmware általában már automatikusan is meghatározza.
  2. Ez az ikon mutatja, hogy mely akció fogja a True jelzést kiküldeni a szenzorról: Ütközött, Megnyomva, Elengedve
  3. A blokk data hub-ja automatikusan lenyílik, amikor felhelyezzük a munkaterületre.

touch02

  1. Kiválasztható, mely porton van a szenzor elhelyezve.
  2. Háromféle akcióból választhatunk, melyek a szenzor True jelzésének kiváltását eredményezik.
  3. A visszajelző dobozban a felcsatlakoztatott NXT-n tudjuk tesztelni a szenzort.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
port Port Number 1 - 4 1 = Port 1, 2 = Port 2, 3 = Port 3, 4 = Port 4  
act Akció Number 0 - 2 0 = Megnyomva
1 = Elengedve
2 = Ütközött
 
yesno Igen / Nem Logic True/False ÖSszehasonlítás eredménye  
rawdata Nyers érték Number 0 - 1024 Nyers, skálázatlan szenzorról olvasott érték  

Ultrahang szenzor (Ultrasonic, Sonar)

Az ultrahang szenzor segítségével távolságokat tudunk mérni adott objektumoktól. A szenzor korlátai 250 cm-nél vannak. A többi szenzorhoz hasonlóan megadható küszöbérték, mely feltételének teljesülésekor a szenzor True jelet ad ki, illetve használható a drótozásos paraméterátadás.
sonar01

  1. A szám jelzi, hogy mely porton van a szenzor elhelyezve.
  2. A vonalas jelzőábra mutatja, hogy hova van beállítva a True küszöb.
  3. A blokk data hub-ja automatikusan kinyílik, ha a munkafelületre húzzuk. Legalább egy adat drótot át kell húznunk egy másik blokk data hub-jába. A küszöbértéket a data hub segítségével dinamikusan is állíthatjuk.

sonar02

  1. Kiválasztható, mely porton van a szenzor elhelyezve.
  2. A csúszkával, vagy a szövegdobozzal beállíthatjuk a küszöböt, illetve azt, hogy a küszöb vizsgálatakor kisebb vagy nagyobb relációt használjon-e a blokk.
  3. Kiválaszthatjuk, hogy a visszaadott értékeket centiméterben, vagy inch-ben kérjük.
  4. A visszajelző dobozban a felcsatlakoztatott NXT-n tudjuk tesztelni a szenzort.

Megjegyzés: ha egyszerre két ultrahang szenzort használó robot találkozik, könnyen megzavarják egymás méréseit.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
port Port Nunmber 1 - 4 1 = Port 1, 2 = Port 2, 3 = Port 3, 4 = Port 4  
triggerp Küszöbérték Number 0 - 255(cm)
0 - 100(in)
A viszonyítási szám  
greater Kisebb / Nagyobb Logic True/False A hasonlításhoz használt reláció.
True = Nagyobb, False = Kisebb
 
yesno Igen / Nem Logic True/False Az összehasonlítás eredménye  
dist Távolság Number 0 - 255(cm)
0 - 100(in)
A szenzorról leolvasott, skálázott érték.  

Színérzékelő szenzor (Color Sensor)

Színérzékelő mód

A színérzékelő blokk két funkcióval bír, de egyszerre csak az egyiket használhatjuk: vagy különböző színeket érzékel, vagy fényintenzitást mér (kvázi ahogy a fentebb tárgyalt Light Sensor). Ha mindkét funkciót használnánk, akkor egy vezérlési szerkezetbe helyezhetjük a blokkot.
A blokk egy logikai értéket fog visszaadni, a funkcionalitásától és a beállítástól függően.
colorsensor01

  1. A szám jelzi, hogy mely porton van a szenzor elhelyezve.
  2. Ez az ikon jelzi, hogy milyen módban van az eszköz.
  3. A blokk data hub-ja automatikusan kinyílik, ha a munkafelületre húzzuk. Legalább egy adat drótot át kell húznunk egy másik blokk data hub-jába.

colorsensor03

  1. Kiválaszthatjuk az eszköz csatlakozási portját. Alapbeállítás: 3.
  2. A lenyitható menüben kiválaszthatjuk az eszköz működési módját. Először nézzük a Color Sensor módot.
  3. A legördülő menüben kiválaszthatjuk, hogy egy tartományon kívül, vagy belül vizsgáljuk a feltételeket. Inside Range esetén a blokk jelezni fog, ha a megadott intervallumon belül van a mért szín. Outside Range hasonlóan, csak intervallumon kívül.
  4. Megadhatjuk a két csúszkával, hogy milyen intervallumon vizsgálunk.

Fényintenzitást mérő mód

colorsensor04

  1. A szám jelzi, hogy mely porton van a szenzor elhelyezve.
  2. Az ikon jelzi a Light Sensor módot, és a kiválasztott színt.
  3. Az érzékelés küszöbét jelző ikon.
  4. A blokk data hub-ja automatikusan kinyílik, ha a munkafelületre húzzuk. Legalább egy adat drótot át kell húznunk egy másik blokk data hub-jába.

colorsensor06

  1. A sliderrel, vagy a mellette lévő beviteli mezővel beállíthatjuk a küszöbértéket, a csúszka két oldalán lévő radiobutton a feltétel vizsgálatát szabályozza: ha a baloldali gomb van bekapcsolva, akkor a blokk igazat fog jelezni, ha a fényintenzitás kisebb, mint a küszöbérték.
  2. Ha bekapcsoljuk a "Light" checkboxot, akkor a szenzor bekapcsolja a saját fényszóróját, hogy a visszavert fényt tudja vizsgálni. Alaphelyzetben piros fénnyel világít, de itt átállítható.
  3. Egy visszacsatoló szám, amin ellenőrizni tudjuk, hogy milyen intenzitást (0-100) mér aktuálisan a robot.

  Csatlakozó Adattípus Értékintervallum Mit jelentenek az értékek A csatlakozóval nem foglalkozunk, ha ...
port Port Nunmber 1 - 4 1 = Port 1, 2 = Port 2, 3 = Port 3, 4 = Port 4  
range Intervallum Logic True / False True - az intervallumon belül vagyunk
False - az intervallumon kívül vagyunk
Light Sensor módban
A Szín Intervallum A Number 0-6 0 = Left of Black
1 = Between Black and Blue
2 = Between Blue and Green
3 = Between Green and Yellow
4 = Between Yellow and Red
5 = Between Red and White
6 = Right of White
Light Sensor módban
B Szín Intervallum B Number 0-6 0 = Left of Black
1 = Between Black and Blue
2 = Between Blue and Green
3 = Between Green and Yellow
4 = Between Yellow and Red
5 = Between Red and White
6 = Right of White
Light Sensor módban
greater Kisebb / Nagyobb Logic True/False A hasonlításhoz használt reláció.
True = Nagyobb, False = Kisebb
Color Sensor módban
triggerp Küszöbérték Number 0 - 100 A viszonyítási szám Color Sensor módban
genlight Világítás Logic True/False Meghatározza, hogy a szenzor saját LED-je világítson-e, vagy sem. Color Sensor módban
freq Lámpa színe Number 0 - 2 0 = Vörös, 1 = Zöld, 2 = Kék Color Sensor módban
yesno Igen / Nem Logic True/False Az összehasonlítás eredménye  
dist Észlelt szín Number 0 - 6 1 = Black
2 = Blue
3 = Green
4 = Yellow
5 = Red
6 = White
Light Sensor módban

3. Típuskonstrukciók

Mivel az NXT-G kevésbé a típusokra, és inkább az alprogramokra épül, így a típuskonstrukcióknak nem igazán van szerepe a programozás során, így erre nem is adtak a nyelv készítői lehetőséget. Ügyes programozók azonban megfelelő LabView ismeretekkel felvértezve képesek ilyeneket készíteni.

Tömbök

Természetesen a nyelv készítői által nem támogatott, de működőképes megoldás, melyet apró külső hack-ek árán, de be tudunk hozni a fejlesztőkörnyezetbe, és így a nyelvbe is.
De természetesen kézzel is készíthetünk magunknak.

5. Típuskonverziók

Az NXT-G nem támogatja az implicit típuskonverziót, az explicit esetre is csak egyetlen blokk adott, ez pedig Number és Text típusok között képes konvertálni.
strformat

6. Változók, adatblokkok

Az NXT-G globális változókkal dolgozik.
Ezeket a fejlesztőkörnyezet "Edit/Define variables" menüpontjából tudjuk elérni. Blokkok data hub-jához kötött változók a használatukig élnek.
A blokkoknál általában meg lehet adni konstans értéket egyes tulajdonságokhoz, ám többnyire ezek nem igazi konstans értékek, a konstans itt csak azt jelenti, hogy a kezdőérték belefordul a kódba, de a data hub mezőjének értéke ettől még dinamikusan változhat.

Összehasonlító blokk (Compare)

Ez a blokk összehasonlítást tud végezni két számon. Kimenete egy logikai érték, a bemenetek lehetnek előre definiáltak is.
comp01

  1. Két bemenő, három kimenő érték. A nyelv érdekessége, hogy a data hub-ok engedik a paraméterek "tovább dobását" is.


comp02

  1. A bemenő számokat megadhatjuk itt is, de dinamikusan is.
  2. A menüből kiválasztható a használni kívánt összehasonlító művelet: nagyobb, kisebb, egyenlő.

Logikai blokk

Ez a blokk a logikai operátorokat foglalja magában.
logic01

  1. Két bemenő, három kimenő érték. A nyelv érdekessége, hogy a data hub-ok engedik a paraméterek "tovább dobását" is.


logic02

  1. A bemenő logikai értékeket megadhatjuk itt is, de dinamikusan is.
  2. A menüből kiválasztható a használni kívánt logikai művelet: "és", "vagy", "kizáró vagy", "negálás" (ez esetben az A paraméter értékét használja fel).

Matematika blokk (Math)


math01

  1. Az eddigiekhez hasonlóan a Matematikai blokk is két paramétert vár, és három kimenő értéket képes visszaadni.


math02

  1. A bemenő értékeket megadhatjuk itt is, de dinamikusan is.
  2. A menüből kiválasztható a használni kívánt művelet: összeadás (alapértelmezetten), kivonás, szorzás, osztás.

Random blokk

A random blokk neve magáért beszél.
rand01


rand02

  1. Kézzel, vagy dinamikusan is megadható a randomizálni kívánt intervallum. A véletlenszám generálás egészeket ad vissza.

Intervallum blokk (Range)


range01

  1. Az intervallum blokk számok intervallumba esését vizsgálja. Tulajdonképpen Összehasonlító blokkokból is elkészíthetnénk ezt, de mivel gyakran használunk ilyet, célszerű volt a nyelvbe beágyazni.


range02

  1. A tesztelőérték mezőbe megadhatunk egy konstans, vagy dinamikusan állíthatjuk a data hub-on keresztül.
  2. Az első és felső határokat szintén kézzel, vagy dinamikusan adhatjuk meg.
  3. A legördülő menüben kiválaszthatjuk az intervallum vizsgálat módját is: intervallumon belül (Inside Range), kívül (Outside Range)

Változó blokk (Variable)

A változó blokkal bármelyik, a programunkhoz beállított változót elérhetjük, pontosabban azt, amelyik elérésére a blokkot definiáljuk. Innen következik az, hogy az NXT-G blokkhoz nem kötött változói (tehát amik nem szerepelnek explicit módon egy data hub-ban sem) mind globálisak.
var01

  1. Olvasás esetén egy kimenő értéket van a blokknak.


var02

  1. A listából kiválaszthatjuk a programban definiált változók közül a használni kívántat.
  2. A változóművelet típusa adható meg: írás vagy olvasás.
  3. Írás esetén lehetőségünk van típusnak megfelelő konstans értéketk megadására.