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.