IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.

sada NXT 1.0 - LEGO NXT

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.

LEGO 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.

LEGO NXT

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

LEGO NXT

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

LEGO NXT

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

LEGO NXT

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.

LEGO NXT

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.

LEGO NXT

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.

LEGO NXT

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.

LEGO NXT

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).

LEGO NXT

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.

LEGO NXT

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
LEGO NXT

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.


 

Všechny články v sekci
LEGO NXT
Přeskočit článek
(nedoporučujeme)
NXJ - základy API a první užitečný program
Článek pro vás napsal Petr Čech
Avatar
Uživatelské hodnocení:
14 hlasů
Autor se věnuje především desktopovým aplikacím v C#, okrajově Javě na Legu NXT.
Aktivity