NXT - JAVA - úlohy

Z MediaWiki SPŠ a VOŠ Písek
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.

Sem vložte titulek
Sem vložte titulek
Sem vložte titulek
Sem vložte titulek

Ú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();

	}
}