import lejos.nxt.*;
/**
* Test of sensor port listeners.
*
* Note that these only work with Analog/Digital sensors
* like the LEGO Touch, Sound and Light sensors.
*
* They do not work with I2C sensors like the Ultrasonic sensor.
*
* This test needs a LEGO Sound sensor connected to sensor port S1.
*
* @author Lawrie Griffiths
*
*/
public class Listen implements SensorPortListener
{
String changed = "State changed";
String val = "Value:";
String oldVal = "old Value:";
String free = "Free Mem:";
SoundSensor sound = new SoundSensor(SensorPort.S1);
public static void main (String[] aArg)
throws Exception
{
Listen listen = new Listen();
listen.run();
Button.ESCAPE.waitForPressAndRelease();
LCD.clear();
LCD.drawString("Finished", 3, 4);
LCD.refresh();
Thread.sleep(2000);
}
public void stateChanged(SensorPort port, int value, int oldValue)
{
if (port == SensorPort.S1 && sound.readValue() > 50)
{
LCD.clear();
LCD.drawString(changed,0,0);
LCD.drawString(val, 0, 1);
LCD.drawInt(value,7,1);
LCD.drawInt(sound.readValue(), 12, 1);
LCD.drawString(oldVal, 0, 2);
LCD.drawInt(oldValue, 11, 2);
LCD.drawString(free, 0, 4);
LCD.drawInt((int)(Runtime.getRuntime().freeMemory()),10,4);
LCD.refresh();
}
}
private void run()
throws InterruptedException
{
SensorPort.S1.addSensorPortListener(this);
}
}