NXT - JAVA - úlohy
Skočit na navigaci
Skočit na vyhledávání
HW: NXT realizace: David Langmaier Martin Mach Karel Mírka
Kód v Javě spouštíme na flashnutém robotovi NXT (leJOS FW). Napsaný kód v Javě (např. HelloWorld.java) zkompilujeme příkazem "nxjc HelloWorld.java" a poté nahrajeme do připojeného NXT příkazem "nxj -r -o HelloWorld.nxj HelloWorld". Pokud nechceme program spustit hned po uploadu, odebereme přepínač "-r" a spustíme ručně přes ovládání NXT.
Úkoly:
- Sestavte robota, napište program a vyzkoušejte proto, aby robot:
se pohyboval vpřed
import lejos.nxt.Button;
import lejos.nxt.Motor;
import lejos.robotics.navigation.DifferentialPilot;
public class HelloWorld {
public static void main(String[] args) {
DifferentialPilot pilot = new DifferentialPilot(2.25f, 5.5f, Motor.B, Motor.C);
pilot.travel(100, true);
Button.waitForAnyPress();
}
}
se pohyboval vpřed do vzdálenosti 1m
import lejos.nxt.Button;
import lejos.nxt.Motor;
import lejos.robotics.navigation.DifferentialPilot;
public class HelloWorld {
public static void main(String[] args) {
DifferentialPilot pilot; = new DifferentialPilot(2.25f, 5.5f, Motor.B, Motor.C);
pilot.travel(43, true);
Button.waitForAnyPress();
}
}
se pohyboval vpřed ve čtyřúhelníku o straně cca 0,5m
import lejos.nxt.Button;
import lejos.nxt.Motor;
import lejos.robotics.navigation.DifferentialPilot;
public class HelloWorld {
DifferentialPilot both; /* oba motory */
public static void main(String[] args) {
DifferentialPilot both = new DifferentialPilot(2.25f, 5.5f, Motor.B, Motor.C);
while(true){
both.travel(20, false);
Motor.B.rotate(400, false);
if(Button.ESCAPE.isDown())
break;
}
}
}
jel rovně a zastavil na 60 cm vzdáleném místě označeném černou lepící páskou
import lejos.nxt.*;
import lejos.robotics.navigation.DifferentialPilot;
public class HelloWorld {
public static void main(String[] args) throws Exception {
LightSensor light = new LightSensor(SensorPort.S3);
DifferentialPilot both = new DifferentialPilot(2.25f, 5.5f, Motor.B, Motor.C);
while(true){
both.travel(1, true);
if(light.getLightValue() < 30)
break;
}
Button.waitForAnyPress();
}
}
se pohyboval dokud nebude stisknutý dotykový senzor
import lejos.nxt.*;
import lejos.robotics.navigation.DifferentialPilot;
public class HelloWorld {
public static void main(String[] args) throws Exception {
TouchSensor touch = new TouchSensor(SensorPort.S1);
DifferentialPilot both = new DifferentialPilot(2.25f, 5.5f, Motor.B, Motor.C);
while(!touch.isPressed())
{
both.travel(10, true);
}
Button.waitForAnyPress();
}
}
se rozjel na zvukový povel
import lejos.nxt.*;
import lejos.robotics.navigation.DifferentialPilot;
public class HelloWorld {
public static void main(String[] args) throws Exception {
SoundSensor sound = new SoundSensor(SensorPort.S2);
DifferentialPilot both = new DifferentialPilot(2.25f, 5.5f, Motor.B, Motor.C);
Thread.sleep(500); /* jinak se rozjede, díky zapípání NXT */
while(true){
if((sound.readValue() - 80) > 0){
both.travel(10, false);
}
if(Button.ESCAPE.isDown())
break;
}
Button.waitForAnyPress();
}
}
jel ve čtyřúhelníku a zastavil se u počátečního bodu
import lejos.nxt.Button;
import lejos.nxt.Motor;
import lejos.robotics.navigation.DifferentialPilot;
public class HelloWorld {
public static void main(String[] args) {
DifferentialPilot both = new DifferentialPilot(2.25f, 5.5f, Motor.B, Motor.C);
for(int i=0; i < 4; i++){
both.travel(20, false);
Motor.B.rotate(400, false);
}
Button.waitForAnyPress();
}
}
jel v před a pokud čidlo ultrazvuku zjistí překážku se zastavil, kousek zacouval, otočil se o 160° a celý cyklus pokračoval
import lejos.nxt.*;
import lejos.robotics.navigation.DifferentialPilot;
public class HelloWorld {
public static void main(String[] args) throws Exception {
UltrasonicSensor sonic = new UltrasonicSensor(SensorPort.S4);
DifferentialPilot both = new DifferentialPilot(2.25f, 5.5f, Motor.B, Motor.C);
while(true)
{
both.travel(1, true);
if(sonic.getDistance() < 30)
{
both.travel(-10, false);
Motor.B.rotate(600, false);
}
if(Button.ESCAPE.isDown())
break;
}
Button.waitForAnyPress();
}
}
s pomocí čidla světla pohyboval po čáře
import lejos.nxt.*;
import lejos.robotics.navigation.DifferentialPilot;
public class HelloWorld {
public static void main(String[] args) throws Exception {
LightSensor light = new LightSensor(SensorPort.S3);
while (true) {
LCD.drawInt(light.getNormalizedLightValue(), 4, 0, 1);
if (light.getNormalizedLightValue() < 400) {
Motor.C.rotate(10, true);
} else {
Motor.B.rotate(10, true);
}
if (Button.ESCAPE.isDown())
break;
}
Button.waitForAnyPress();
}
}