i

Testlauf Beep'n'buzz

Delay

Da beim Betätigen eines Tasters dieser für mehrere Millisekunden gedrückt ist, würde der Roboter mit der entwickelten Schleife bei jedem Druck mehrmals Summen bzw. Piepen. Daher ist es sinnvoll, eine Verzögerung in den Programmablauf einzubauen. Hierzu stellt die Klasse Delay die Klassenmethode msDelay() bereit, die den Prozess für die als Parameter in Millisekunden übergebene Zeit warten lässt.

Lösung

Damit ergibt sich folgender Quelltext zur Lösung unseres Problems:

import lejos.nxt.*;
import lejos.util.Delay; // Einbinden der Delay-Klasse

/* Ein NXT-Baustein mit zwei Tastsensoren
 * soll ein helles Geräusch (piepsen, beep) machen, wenn der rechte Taster gedrückt ist,
 * und ein dumpfes Geräusch (summen, buzz) von sich geben, wenn der linke Taster gedrückt ist
 * Das Programm endet durch drücken des ESCAPE-Knopfes auf dem NXT (dunkel grauer Knopf unten).
 */
 
public class BeepNbuzz {
 // Erzeugung der Objekte als Attribute
 static TouchSensor linkerTaster = new TouchSensor(SensorPort.S1);
 static TouchSensor rechterTaster = new TouchSensor(SensorPort.S4);

 // Hauptprogramm
  public static void main(String[] args) {

    while (!Button.ESCAPE.isDown()) { // solange ESCAPE nicht (!) gedrückt
      if (linkerTaster.isPressed()) {
        Sound.buzz();
      }
      if (rechterTaster.isPressed())  {
        Sound.beep();
      }
      
      Delay.msDelay(200); // Warten von 200 ms
    }
  }
}

Aufgabe: Testlauf

Gib den Quellcode ein und speichere ihn unter dem Namen BeepNbuzz.java. Teste anschließend das Programm auf deinem NXT-Baustein.

Suche

v
2.6.4.8
inf-schule.de/programmierung/robotik/exkursOOlejos/loesung_beepnbuzz

Rückmeldung geben