... | @@ -125,6 +125,75 @@ Programmet SoundCtrCar.java gør brug af forskellige slags løkker. Hvis program |
... | @@ -125,6 +125,75 @@ Programmet SoundCtrCar.java gør brug af forskellige slags løkker. Hvis program |
|
|
|
|
|
Som det demonstreres i videoen er det ikke muligt at afbryde programmet ved brug af ESCAPE knappen. Dette skyldes at løkkerne i programmet blokerer for trykket efter at lydsensoren har registreret lyden.
|
|
Som det demonstreres i videoen er det ikke muligt at afbryde programmet ved brug af ESCAPE knappen. Dette skyldes at løkkerne i programmet blokerer for trykket efter at lydsensoren har registreret lyden.
|
|
|
|
|
|
|
|
```Java
|
|
|
|
import lejos.nxt.*;
|
|
|
|
import lejos.util.Delay;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The locomotions of a LEGO 9797 car is controlled by sound detected through a
|
|
|
|
* microphone on port 1.
|
|
|
|
*
|
|
|
|
* @author Ole Caprani
|
|
|
|
* @version 23.08.07
|
|
|
|
*/
|
|
|
|
public class SoundCtrCarFi {
|
|
|
|
private static int soundThreshold = 90;
|
|
|
|
private static SoundSensor sound = new SoundSensor(SensorPort.S1);
|
|
|
|
|
|
|
|
private static void waitForLoudSound() throws Exception {
|
|
|
|
int soundLevel;
|
|
|
|
|
|
|
|
Thread.sleep(500);
|
|
|
|
do {
|
|
|
|
soundLevel = sound.readValue();
|
|
|
|
LCD.drawInt(soundLevel, 4, 10, 0);
|
|
|
|
} while (soundLevel < soundThreshold);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
|
|
Button.ESCAPE.addButtonListener(new ButtonListener() {
|
|
|
|
@Override
|
|
|
|
public void buttonPressed(Button b) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void buttonReleased(Button b) {
|
|
|
|
Car.stop();
|
|
|
|
LCD.clear();
|
|
|
|
LCD.drawString("Program stopped", 0, 0);
|
|
|
|
Delay.msDelay(2000);
|
|
|
|
System.exit(0);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
LCD.drawString("dB level: ", 0, 0);
|
|
|
|
LCD.refresh();
|
|
|
|
|
|
|
|
while (true) {
|
|
|
|
waitForLoudSound();
|
|
|
|
LCD.drawString("Forward ", 0, 1);
|
|
|
|
Car.forward(100, 100);
|
|
|
|
|
|
|
|
waitForLoudSound();
|
|
|
|
LCD.drawString("Right ", 0, 1);
|
|
|
|
Car.forward(100, 0);
|
|
|
|
|
|
|
|
waitForLoudSound();
|
|
|
|
LCD.drawString("Left ", 0, 1);
|
|
|
|
Car.forward(0, 100);
|
|
|
|
|
|
|
|
waitForLoudSound();
|
|
|
|
LCD.drawString("Stop ", 0, 1);
|
|
|
|
Car.stop();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
´´´
|
|
|
|
|
|
*Video 3: SoundCtrCar.java demonstration med program-Escape*
|
|
*Video 3: SoundCtrCar.java demonstration med program-Escape*
|
|
|
|
|
|
[![image alt text](http://img.youtube.com/vi/Qyjo4VAc5tE/0.jpg)](http://www.youtube.com/watch?v=Qyjo4VAc5tE)
|
|
[![image alt text](http://img.youtube.com/vi/Qyjo4VAc5tE/0.jpg)](http://www.youtube.com/watch?v=Qyjo4VAc5tE)
|
... | | ... | |