Krátký návod pro prostředí LeJOS-NXJ
Základní srovnání nejpoužívanějších programovacích prostředí pro NXT NXT-G NXC LeJOS NXJ Jazyk Grafický NotExactly C JAVA Platforma Win., Mac Win., Linux, Mac IDE Ano Plugin do Eclipse a Netbeans Podpora float Ne Obsluha událostí
Výhody LeJOS-NXJ Nevýhody LeJOS-NXJ Mnoho předpřipravených metod, které usnadňují a urychlují programování. Pohodlné programování v NetBeans Možnost objektového programování v jazyce JAVA Podpora float Nevýhody LeJOS-NXJ Komplikovaná instalace Nutnost základní znalosti programování
Základní metody I Třída Motor: void forward() void setSpeed(int speed) Spustí motor dopředu void setSpeed(int speed) Nastaví rychlost motoru (úhlových stupňů za vteřinu)(0-900) void stop() Vypne motor void rotate(float angle) Otočí motor o úhel Příklad: Motor.A.setSpeed(200);
Základní metody II Třída Button: void waitForPress() Třída LCD: Čeká se dokud se nezmáčkne tlačítko Třída LCD: void drawString(String str, int x, int y) Vykreslí řetězec na displej Příklad: Motor.A.forward(); LCD.drawString("DOPREDU", 0, 0); Button.waitForPress();
Interface Pilot, třída TachoPilot Používá se pro robota typu vozidlo. Umožňuje použít mnohé užitečné metody. Konstruktor: TachoPilot(float wheelDiameter, float trackWidth, Motor leftMotor, Motor rightMotor) wheelDiameter = průměr kol, trackWidth = rozkol kol Vše musí být ve stejných jednotkách, ty si volíte sami. Všechny metody pak vrací hodnoty v jednotkách v jakých jste inicializovali tuto třídu. Příklad: Pilot pilot = new TachoPilot(56f, 110f, Motor.A, Motor.C);
Pokročilé metody I Třída Pilot: void arc(float radius) Robot pojede po oblouku. radius = poloměr zatáčky. void steer(float turnRate) Robot pojede po zakřivené dráze. turnRate = 100…levé kolo stojí, pravé se točí dopředu turnRate = 200 ... levé kolo se točí dozadu, pravé se točí dopředu Příklad: //Robot bude jezdit dokola, dokud se nestikne ESCAPE Pilot pilot = new TachoPilot(56f, 110f, Motor.A, Motor.C); while (Button.ESCAPE.isPressed() == false){ pilot.steer(100);}
Pokročilé metody II Třída Pilot: float getAngle() vrátí hodnotu úhlu ve stupních, kterou robot urazil. float getTravelDistance() vrátí vzdálenost, kterou robot urazil void travel(float distance) Robot pojede, dokud neurazí vzdálenost rovnou distance
Dotykový senzor Konstruktor boolean isPressed() TouchSensor(ADSensorPort port) boolean isPressed() Metoda zkontroluje jestli nastal dotyk. Příklad: /*Dokud nesepne dotykový senzor, tak motory na pozicích A a C budou v chodu*/ // Senzor je na vstupu číslo 1 TouchSensor sensor = new TouchSensor (SensorPort.S1); while(sensor.isPressed() == false){ Motor.A.forward(); Motor.C.forward();}
Světelný senzor Konstruktor int readValue() void setHigh(int high) LightSensor(ADSensorPort port, boolean floodlight) int readValue() Metoda vrátí hodnotu jasu v procentech podle kalibrace. void setHigh(int high) Nakalibruje horní hranici senzoru void setLow(int low) Nakalibruje spodní hranici senzoru Příklad: LightSensor sensor = new LightSensor(SensorPort.S1, false); sensor.setHigh(600); sensor.setLow(300); int value = sensor.readValue();
Ultrazvukový senzor Konstruktor float getRange() UltrasonicSensor(I2CPort port) float getRange() vrátí vzdálenost v centimetrech k nejbližšímu objektu. Funguje spolehlivě v rozsahu přibližně 5cm až 190cm. Příklad: /*Dokud se nestikne ESCAPE, tak se bude vypisovat vzdalenost k nejblizsimu objektu*/ UltrasonicSensor sensor = new UltrasonicSensor(SensortPort.S1); while(Button.ESCAPE.isPressed() == false){ LCD.drawString(““+sensor.getRange(), 0, 0); }
Zvukový senzor Konstruktor int readValue() SoundSensor(ADSensorPort port) int readValue() Vrátí hodnotu naměřenou senzorem v dB. Příklad: //Měřič hluku SoundSensor sensor = new SoundSensor(SensorPort.S1); while(Button.ESCAPE.isPressed() == false){ LCD.drawString(““+sensor.readValue(), 0, 0); }
Zdroje http://lejos.sourceforge.net/ http://mindstorms.lego.com/en-us/default.aspx http://www.nxtprograms.com/