A nyelvben három elemi, klasszikus értelemben vett típus található:
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.
A kijelző blokkal az NXT kocka kijelzőjére rajzolhatunk vagy írhatunk ki információkat.
Csatlakozó | Adattípus | Értékintervallum | Mit jelentenek az értékek | A csatlakozóval nem foglalkozunk, ha ... | |
Akció | Number | 0 - 5 | 0 = Kép, 1 = Szöveg, 2 = Pont, 3 = Vonal, 4 = Kör, 5 = Rendszerkijelző visszaállítása | ||
Törlés | Logic | True/False | True = Kijelző törlése False = Ne töröld a kijelzőt |
||
Fájlnév | Text | Maximum 15 karakter | A képet tartalmazó fájl neve | Akció nem Kép (Image) | |
Szöveg | Text | Szöveg | Akció nem szöveg (Text) | ||
X | Number | 0 - 99 | X koordináta | ||
Y | Number | 0 - 63 | Y koordináta | ||
Végpont X | Number | 0 - 99 | Utolsó X koordináta (Vonal esetén) | Akció nem vonal (Line) | |
Végpont Y | Number | 0 - 63 | Utolsó Y koordináta (Vonal esetén) | Akció nem vonal (Line) | |
Sugár | Number | 0 - 120 | Sugár (Kör esetén) | Akció nem kör (Circle) |
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.
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 | Number | 1 - 3 | 1 = A, 2 = B, 3 = C | ||
Irány | Logic | True/False | True = Előre False = Hátra |
||
Akció | Number | 0 - 2 | 0 = Konstans 1 = Felfutó 2 = Lefutó |
Hajtási idő = Végtelen vagy másodperc szerinti | |
Sebesség | Number | 0 - 100 | |||
Motorsebesség szabályozás | Logic | True/False | |||
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 | |
Befejezésre várakozás | Logic | True/False | Hajtási idő = Végtelen (mindig False), Másodperc (mindig True) | ||
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 | |
Irány kimenet | Logic | True/False | A blokk utolsó futtatásakor használt motorirány. True = Előre False = Hátra |
||
Fok kimenet | Number | 0 - 2147483647 | Az utolsó futtatáskor forgatott fokok száma. |
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.
Csatlakozó | Adattípus | Értékintervallum | Mit jelentenek az értékek | A csatlakozóval nem foglalkozunk, ha ... | |
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. | ||
Postaláda | Number | 1 - 10 | A fogadó célként megjelölt postaládája | ||
Szöveg | Text | Maximum 58 karakter | A küldendő üzenet | Üzenet típusa nem szöveg (Text) | |
Szám | Number | -2147483648 - 2147483647 | A küldendő üzenet | Üzenet típusa nem szám (Number) | |
Logikai | Logic | True/False | A küldendő üzenet | Üzenet típusa nem logikai (Logic) |
Ezzel a blokkal a robot hangszóróját tudjuk használatban venni.
Csatlakozó | Adattípus | Értékintervallum | Mit jelentenek az értékek | A csatlakozóval nem foglalkozunk, ha ... | |
Akció | Number | 0 - 1 | 0 = Hangfájl, 1 = Hang | ||
Fájlnév | Text | 15 karakter maximum | Lejátszandó hangfájl neve | Akció = Hang | |
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 | |
Vezérlés | Number | 0 - 1 | 0 = Lejátszás, 1 = Stop | ||
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 | |
Hossz | Number | 0 - 65535 | Hanghossz milliszekundumban | Akció = Hangfájl |
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.
A lámpa blokk konfigurációs panelje:
Csatlakozó | Adattípus | Értékintervallum | Mit jelentenek az értékek | A csatlakozóval nem foglalkozunk, ha ... | |
Port | Number | 1 - 4 | Az eszköz fizikai portja, amihez csatlakoztatjuk | Az érték nincs az [1..4] intervallumban | |
Akció | Logikai | On/Off | True = On, False = Off | ||
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 |
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.
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.
Csatlakozó | Adattípus | Értékintervallum | Mit jelentenek az értékek | A csatlakozóval nem foglalkozunk, ha ... | |
Port | Number | 1 - 4 | 1 = Port 1, 2 = Port 2, 3 = Port 3, 4 = Port 4 | ||
Küszöbérték | Number | 0 - 100 | A viszonyítási szám | ||
Kisebb / Nagyobb | Logic | True/False | A hasonlításhoz használt reláció. True = Nagyobb, False = Kisebb |
||
Világítás | Logic | True/False | Meghatározza, hogy a szenzor saját LED-je világítson-e, vagy sem. | ||
Igen / Nem | Logic | True/False | Az összehasonlítás eredménye | ||
Intenzitás, fényerő | Number | 0 - 100 | A szenzorról leolvasott, skálázott érték. | ||
Nyers érték | Number | 0 - 1024 | Nyers, skálázatlan szenzorról olvasott érték. |
Az NXT kockán található gombokat kezelhetjük a programunkon belülről a gomb blokkal.
Csatlakozó | Adattípus | Értékintervallum | Mit jelentenek az értékek | A csatlakozóval nem foglalkozunk, ha ... | |
Gomb | Number | 1 - 3 | 1 = Jobb 2 = Bal 3 = Választó |
||
Akció | Number | 0 - 2 | 0 = Lenyomva 1 = Felengedve 2 = Ütközött |
||
Igen / Nem | Logic | True/False | Az összehasonlítás eredménye |
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.
Csatlakozó | Adattípus | Értékintervallum | Mit jelentenek az értékek | A csatlakozóval nem foglalkozunk, ha ... | |
Postaláda(Mailbox) | Number | 1 - 10 | Az üzenet céljaként megjelölt postaláda | ||
Szöveg input | Text | Maximum 58 karakter | Összehasonlításhoz érték | Üzenet típusa nem szöveg (Text) | |
Szám input | Number | -2147483648 - 2147483647 | Összehasonlításhoz érték | Üzenet típusa nem szám (Number) | |
Logikai input | Logic | True/False | Összehasonlításhoz érték | Üzenet típusa nem logikai (Logic) | |
Fogadott üzenet | Logic | True/False | True, ha volt üzenet (azaz a postaláda üres). | ||
Igen / Nem | Logic | True/False | Összehasonlítás eredménye | ||
Szöveg kimenet | Text | Maximum 58 karakter | Üzenet tartalma | Üzenet típusa nem szöveg (Text) | |
Szám (Number) kimenet | Number | -2147483648 - 2147483647 | Üzenet tartalma | Üzenet típusa nem szám (Number) | |
Logikai kimenet | Logic | True/False | Üzenet tartalma | Üzenet típusa nem logikai (Logic) |
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.
Csatlakozó | Adattípus | Értékintervallum | Mit jelentenek az értékek | A csatlakozóval nem foglalkozunk, ha ... | |
Port | Number | 1 - 4 | 1 = Port 1, 2 = Port 2, 3 = Port 3, 4 = Port 4 | ||
Küszöbérték | Number | 0 - 100 | A viszonyítási szám | ||
Kisebb / Nagyobb | Logic | True/False | A hasonlításhoz használt reláció. True = Nagyobb, False = Kisebb |
||
dBA | Logic | True/False | True = dBA mód False = dB mód |
||
Igen / Nem | Logic | True/False | Az összehasonlítás eredménye | ||
Hangszint | Number | 0 - 100 | A szenzorról leolvasott, skálázott érték. | ||
Nyers érték | Number | 0 - 1024 | Nyers, skálázatlan szenzorról olvasott érték. |
A robothoz adott érintésszenzor tulajdonképpen csak egy gomb, így programozási szinten egy True/False értéket tudunk a szenzorból kinyerni.
Csatlakozó | Adattípus | Értékintervallum | Mit jelentenek az értékek | A csatlakozóval nem foglalkozunk, ha ... | |
Port | Number | 1 - 4 | 1 = Port 1, 2 = Port 2, 3 = Port 3, 4 = Port 4 | ||
Akció | Number | 0 - 2 | 0 = Megnyomva 1 = Elengedve 2 = Ütközött |
||
Igen / Nem | Logic | True/False | ÖSszehasonlítás eredménye | ||
Nyers érték | Number | 0 - 1024 | Nyers, skálázatlan szenzorról olvasott érték |
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.
Csatlakozó | Adattípus | Értékintervallum | Mit jelentenek az értékek | A csatlakozóval nem foglalkozunk, ha ... | |
Port | Nunmber | 1 - 4 | 1 = Port 1, 2 = Port 2, 3 = Port 3, 4 = Port 4 | ||
Küszöbérték | Number | 0 - 255(cm) 0 - 100(in) |
A viszonyítási szám | ||
Kisebb / Nagyobb | Logic | True/False | A hasonlításhoz használt reláció. True = Nagyobb, False = Kisebb |
||
Igen / Nem | Logic | True/False | Az összehasonlítás eredménye | ||
Távolság | Number | 0 - 255(cm) 0 - 100(in) |
A szenzorról leolvasott, skálázott érték. |
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.
Csatlakozó | Adattípus | Értékintervallum | Mit jelentenek az értékek | A csatlakozóval nem foglalkozunk, ha ... | |
Port | Nunmber | 1 - 4 | 1 = Port 1, 2 = Port 2, 3 = Port 3, 4 = Port 4 | ||
Intervallum | Logic | True / False | True - az intervallumon belül vagyunk False - az intervallumon kívül vagyunk |
Light Sensor módban | |
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 | |
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 | |
Kisebb / Nagyobb | Logic | True/False | A hasonlításhoz használt reláció. True = Nagyobb, False = Kisebb |
Color Sensor módban | |
Küszöbérték | Number | 0 - 100 | A viszonyítási szám | Color Sensor módban | |
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 | |
Lámpa színe | Number | 0 - 2 | 0 = Vörös, 1 = Zöld, 2 = Kék | Color Sensor módban | |
Igen / Nem | Logic | True/False | Az összehasonlítás eredménye | ||
Észlelt szín | Number | 0 - 6 | 1 = Black 2 = Blue 3 = Green 4 = Yellow 5 = Red 6 = White |
Light Sensor módban |
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.
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.
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.
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.
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.
Ez a blokk a logikai operátorokat foglalja magában.
A random blokk neve magáért beszél.
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.