Lekce 1 - Seznámení s NXJ pro LEGO NXT
Vítejte u prvního dílu tutoriálu, kde se naučíme programovat LEGO NXT v Javě - s pomocí LeJOS. Co to je? Je to virtuální stroj zpracovávající Javu, který běží jako alternativní firmware pro LEGO Mindstorms. V současnosti jsou k dispozici 3 verze - pro LEGO RCX, EV3 a právě NXT.
Pokud jste se rozhodli přečíst si tento článek, určitě víte, co to LEGO NXT je, ale pro jistotu si to ujasníme. LEGO NXT je souhrnný název pro LEGO sadu sestávající se ze 4 senzorů (v různých verzích se liší), 3 motorů a 1 inteligentní kostky, která to všechno ovládá. Pokud budu používat označení "NXT", budu myslet právě ji. Existují 2 verze - 1.0 a 2.0. Jsou prakticky stejné, jen ve druhé verzi byl zvukový senzor nahrazen senzorem doteku. Mimo to jsou součástí řady LEGO Mindstorms sady RCX (opravdu hodně staré) a EV3 (novější), těm se ale v tomto seriálu věnovat nebudeme.

Tutoriál předpokládá znalost základů Javy a OOP, + “počítačovou angličtinu”. Také předpokládá, že vlastníte LEGO NXT. V případě, že neumíte Javu, nezoufejte a naučte se ji.
Upozornění: Nejsem jakýmkoliv způsobem zodpovědný za jakoukoliv škodu způsobenou tímto návodem (např. flashováním NXT), to ale neznamená, že by informace v tomto článku nebyly pravdivé.
Samotný virtuální stroj by nám nebyl k ničemu, protože chceme s NXT a jeho příslušenstvím nějakým způsobem pracovat. K tomuto účelu obsahuje NXJ (jazyk postavený na Javě) sadu knihoven jak pro NXT, tak pro PC.
Dnešní díl se bude věnovat instalaci potřebných programů a prvnímu Hello world programu. První věc, kterou budeme potřebovat, jsou ovladače pro LEGO.
Instalace ovladače
V případě, že jste na témže počítači pracovali s NXT v např. výchozím obrázkovém “IDE”, můžete tento krok přeskočit. Ovladače pro odpovídající operační systém si stáhnete ze stránek RobotC. LEGO má sice na svých stránkách také odkaz ke stažení, nicméně ten je v současnosti nefunkční. Instalaci zkrátka “vynexťete”, nemá smysl ji nějak rozvádět. Po instalaci připojte NXT k počítači přes USB, otevřete správce zařízení (win+x > správce zařízení) a ujistěte se, že pod záložkou “LEGO devices” vidíte svoje NXT.

Pokud ne, nechť je vám Google dobrým přítelem. Každopádně bez toho nepostupujte dál.
Instalace JDK
Další nepostradatelná věc je JDK - Java development kit, budete potřebovat 32-bitovou verzi, a to i v případě, že máte 64-bitový systém, NXJ totiž neumí pracovat s ničím 64-bitovým. JDK stáhnete ze stránek Oracle.

Instalace NXJ
NXJ najdete na Sourceforge.
Vyberte si nejnovější verzi, a sice soubor ve formátu
leJOS_NXJ_[verze]_win32_setup.exe
Opět relativně normální
instalace- bude vám stačit nainstalovat základ. Budete požádáni o cestu k
JDK- měla by být už vybraná, ale pro jistotu:
C:\Program Files (x86)\Java

Na konci nechejte zaškrtnuté políčko Launch NXJ flash utility,

klikněte na “finish”. Otevře se vám okno podobné tomuto:

Zapněte a připojte NXT, ujistěte se, že máte dostatečně nabité baterie a kliknutím na Flash LeJOS firmware flashněte NXT. Upozornění - flashováním přijdete o veškerá data na NXT! Už nám zbývá jen prostředí, ve kterém budeme psát kód.
Instalace Eclipse
Kód budeme psát v Eclipse IDE, bohužel jediným IDE nativně kompatibilním s NXJ. Budeme potřebovat opět 32-bitovou verzi nezávisle na platformě. Můžete si stáhnout buď .zip archiv a někam si ho rozbalit nebo instalátor z eclipse.org. Pokud dáte přednost instalátoru, vyberte si “eclipse IDE for Java developers”. A nechte instalátor pracovat.

Eclipse máme nainstalované a už se blížíme do finále.
Konfigurace Eclipse
Eclipse v základu netuší, že ho chceme použít na programování LEGA, k tomu nám bude sloužit NXJ plugin. Otevřete Eclipse. Při spuštění budete dotázáni na umístění, kde bude mít Eclipse uložená svoje data. Mohu vám doporučit, aby jste si vytvořili speciální složku např. v Dropboxu.

Otevřete help > install new software. Vyskočí na vás nové
okno, kde do textového pole Work with vložte následující URL:
http://www.lejos.org/tools/eclipse/plugin/nxj/
a potvrďte
klávesou Enter. Vyberte plugin, který našlo a nainstalujte.

Pokud máte jako já českou klávesnici, bude vám nejspíš při psaní kódu vadit několik klávesových zkratek. Doporučuji je odstranit v nastavení. Otevřete window > preferences . Pod záložkou General > Keys. Zkratky, které vám budou vadit:
zkratka | znak | název |
---|---|---|
ctrl + alt + G | ] | find text in workspace |
ctrl + alt + N | } | Next memory monitor |
ctrl + alt + B | { | Skip all brakpoints |
Název zadejte do vyhledávacího pole, vyberte příslušnou položku a
kliknutím na unbind command zkratku odstraníte. K zahození není ani
trochu agresivnější našeptávač. Ten aktivujete (v nastavení) java
> editor > content assist. Neexistuje nativní cesta, ale jde to
velmi snadno obejít: obsah pole auto activation triggers změníte na:
abcdefghijklmnopqrstuvwxyzABSDEFGHIJKLMNOPQRSTVWXYZ._#
Změnu
nastavení potvrďte tlačítkem OK.
První program
Nemůžeme začít ničím jiným než Hello world. Projekt v Eclipse vytvoříte pomocí file > new > LeJOS NXT project. Všimněte si, že existuje i typ LeJOS PC project, ke kterému se vrátím v jednom z následujících dílů. Projekt si pojmenujte "Hello world", všude můžete nechat výchozí konfiguraci, a můžete projekt vytvořit tlačítkem finish.

Projekt je prázdný, proto si musíme manuálně přidat hlavní třídu. V
package exploreru klikněte pravým na váš projekt new > class. Třídu si
pojmenujte Main. Zároveň zaškrtněte checkbox u položky public static
void main(String[] args), to způsobí vygenerování entry pointu, tj.
statické metody main(String[] args)
.

V prostředním, největším okně Eclipse máte otevřený samotný kód. Obsah třídy Main upravte na následující:
import lejos.nxt.Button; public class Main { public static void main(String[] args) { System.out.println("Hello world!"); Button.waitForAnyPress(); } }
Pojďme si rozebrat, co kód dělá. První řádek je víceméně jasný - zobrazí “Hello world!” a sice na LCD displeji, kterým NXT disponuje. Další řádek také není nic složitého - bez něj by se jednoduše program ukončil ihned po zobrazení textu. Takto se program zastaví a čeká na stisknutí jakéhokoliv tlačítka na NXT, které vrátí jako jeho číselné id typu int. Kód máme napsaný, ale co s ním? Musíme nějak sdělit Eclipse, že ho má zkompilovat pro NXT a nahrát ho tam. Zapněte NXT. Když program spustíte pomocí tlačítka run v nástrojové liště (nebo zkratkou Ctrl + F11), zeptá se, jak ho spustit. Vyberte možnost LeJOS NXT program.

Proklikejte se zbytkem oken a ve výstupní konzoli Eclipse byste měli vidět něco jako
Linking ... Program has been linked successfully Uploading ... Found NXT: LEGO 00165306ADB8 leJOS NXJ> Upload successful in 1123 milliseconds program has been uploaded

Jakmile se program nahraje do NXT, spustí se a uvidíte hlášku “Hello world!”, kterou můžete zavřít stiskem libovolného tlačítka. Potom se program ukončí a NXT se restartuje zpět do hlavního menu, jehož popisem se nebudeme zdržovat. Jednak pro nás není důležité, druhak je velmi intuitivní. To je pro dnešek vše, příště se budeme zaobírat něčím zajímavějším.
PS: Je to můj první článek, zajímalo by mě, jak se vám líbí/nelíbí.
V příští lekci, NXJ - základy API a první užitečný program, se seznámíme se základy API.