späť na úvod

Programovací jazyk NXC
Stručný návod alebo "čo som sa zatial naučil"

     NXT robota sa dá okrem dodávaného grafického programu LEGO Mindstorms NXT programovať aj s pomocou NXC programovacieho jazyka. Bricx Command Center (BricxCC) je plnohodnotný program, ktorý zvládne naprogramovať LEGO Mindstorms NXT s použitím jazyka Not eXactly C (NXC)* a ďalej potom pomocou Next Byte Codes (NBC)**. Zároveň sa dá týmto programom realizovať ovládanie pre celú radu ďalších možných robotických zostáv používajúcich napríklad predchodcu NXT a to kocku RCX (všetky verzie). RCX kocka je podporovaná v C, C++, Pascale, Forthane a v Jave používajúce alternatívne firmwary brickOS, pbForth, a leJOS. Ďalej potom Scout, Cybermaster a Sobot, čo sú programovatelné kocky používajúce Not Quite C (NQC) jazyk atď.

LEGO

Základné príkazy NXC

NXC používa základné príkazy jazyka C, pričom potrebuje ovladať a prijímať informácie od vstupno/výstupných zariadení, ktoré sa dajú pripojit na kocku - motory, svetelný senzor, dotykový senzor, ultrazvukový snímač, zvukový senzor a rôzne ďalšie...

Ovládanie motorov
Motory NXT se môžu pohybovať dopredu či dozadu s rýchlosťou udávanou v percentách (medzi 0 až 100).
OnFwd(OUT_A, 75); // Otáča motorom A na 75%
OnFwd(OUT_B, 50); // Otáča motorom B na 50%
OnFwd(OUT_BC, 100); // Otáča motorom B a C naplno
OnRev(OUT_C, 60); // Otáčí motorem C dozadu na 60% - môže sa tiež použiť OnFwd(OUT_C, -60)
Off(OUT_ABC); // Zastaví všetky motory
Na zastavenie motora sa používa funkcia Off. Aby sa robot otočil, musí sa jeden motor nechat točit dozadu a druhý dopredu, alebo sa nechá jeden motor otáčat pomalšie ako druhý.

Aby bola umožnená 100% rovná jazda, existuje funkcia, ktorá otáča motory synchronizovane.
OnFwdReg(OUT_AB, 30, 1); // Otáča synchronizovane motory A a B
RotateMotor(OUT_B, 30, 90); // Otočí motorom B 30% rýchlosťou o 90°

Dotykový senzor
Vyhodnocuje stav spojený/rozpojený.
SetSensorTouch(IN_1); // nastaví IN_1 ako dotykový senzor
tast = Sensor(IN_1); // číta hodnotu senzoru IN_1 - O rozpojený / 1 spojený

Zvukový senzor
Meria hodnoty akustickej úrovne v rozsahu od 0 do 100.
SetSensorSound(IN_2); // nastaví na linku IN_2 zvukový senzor
sound = Sensor(IN_2); // číta hodnotu hlasitosti na linke IN_2

Svetelný senzor
Meria svetelnosť dopadajúceho žiarenia v rozsahu od 0 do 100.
SetSensorLight(IN_3); // na linku IN_3 je pripojeny svetelný senzor
light = Sensor(IN_3); // číta hodnotu svetelnosti na linke IN_3

Ultrazvukový snímač
Meria vzdialenosť od prekážky v palcoch. Je nutné dať pozor na vlastnosti odrazovej plochy s nebezpečím falošných odrazov (napr. od koberca). Zle vyhodnocuje malé vzdialenosti a malé predmety na väčšie vzdialenosti (loptička do 50cm).
SetSensorLowspeed(IN_4); // na IN_4 je ultrazvukový snímač
ultra = Sensor(IN_4); // číta hodnotu ultr. snímača na IN_4

Displej
Rozlíšenie 100*64. Umiestnenie textu je v súradniciach x (zľava) a y (zospodu). Pre vertikálne súradnice riadkov funguje tiež LCD_LINE1, LCD_LINE2, ... Okrem toho existuje príkaz "true" alebo "false". True znamená, že je zmazaný vždy celý výstup a nanovo zobrazený (občas preblikuje). False znamená, že budú zmenené iba aktualizované miesta.
TextOut(0,50,"Ahoj matfyzak"); // Zobrazí na súradnici x=0 y=50 text "Ahoj matfyzak"
TextOut(20,LCD_LINE3,"Maj sa FMFI"); // Zobrazí na súradnici x=20 a 3.riadku text "Maj sa FMFI"



*   Jazyk NXC (Not eXactly C) je vyšší programovací jazyk podobný jazyku C postavený na NBC (Next Byte Codes) kompilátore používaný na ovládanie a riadenie NXT kociek. Pre kompilovanie NXC programov musí byť použitý NBC kompilátor a zdrojový kód musí mať príponu .nxc

**   Next Byte Code (NBC) je jednoduchý jazyk s Assemblerovskou syntaxou, ktorý priamo používajú programovatelné LEGO's NXT kocky.