Lego-Robotik mit Java

English
Virtueller Campus Projekt, PHBern
HomeoopNXToopNXJlejosNXTlejosNXJLegoRCXDruckenJava-Online
Online-Editor starten

Ultraschallsensor


Benötigter Roboter:

NXT mit Gear und Ultrasonicsensor


Mit Ultraschalsensor kann man die Distanz zu einem Objekt messen. Der Roboter bewegt sich auf einer Fläche (z.B. Tisch). Falls er auf die Tischkante kommt, stürzt er nich ab, sondern fährt ein kurze Strecke zurück, dreht 90° links oder rechts und setzt die Bewegung weiter.

 

 

Beispiel mit Online Editor testen

 

Programmcode:

// UltrasonicEx1.java

import ch.aplu.nxt.*;
import ch.aplu.util.*;

public class UltrasonicEx1 implements UltrasonicListener
{
  private final int triggerLevel = 20;
  private Gear gear;
  
  public UltrasonicEx1()
  {
    NxtRobot robot = new NxtRobot();
      
    UltrasonicSensor us = new UltrasonicSensor(SensorPort.S1);
    robot.addPart(us);
    us.addUltrasonicListener(this, triggerLevel);

    gear = new Gear();
    gear.setSpeed(15);
    robot.addPart(gear);
    gear.forward();

    while (!QuitPane.quit())
    {}
    robot.exit();
  }
  
  public void far(SensorPort port, int level)
  {
    gear.backward(2000);
    if (Math.random() < 0.5)
      gear.left(1000);
    else
      gear.right(1000);
    gear.forward();
  }  
  
  public void near(SensorPort port, int level)
  { 
  } 
    
  public static void main(String[] args)
  {
    new UltrasonicEx1();
  }
}

Erklärungen zum Programmcode:
implements UltrasonicListener
Der Ultraschallsensor wird durch einen UltrasonicListener überwacht.
Der Interface UltrasonicListener hat zwei Callbackmethoden far() und near()
private final int triggerLevel = 20
Distanzlevel wird auf 20 cm gesetzt
us.addUltrasonicListener(this, triggerLevel) UltrasonicListener bezieht sich auf die aktuelle Instanz und den festgelegten level