- Code: Select all
import icommand.platform.nxt.Light;
import icommand.platform.nxt.Sensor;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.util.LinkedList;
import java.util.Timer;
import java.util.TimerTask;
public class DDWD extends Applet {
private Light lightsensor;
private LinkedList dataLightOff;
private LinkedList dataLightOn;
public void init() {
resize(1000,500);
System.out.println("resizing");
final Graphics g = getGraphics();
lightsensor = new Light(Sensor.S1);
dataLightOff = new LinkedList();
dataLightOn = new LinkedList();
System.out.println("setting up queue's and sensors");
for(int i = 0; i < 100; i ++){
dataLightOff.add(new Integer(0));
dataLightOn.add(new Integer(0));
}
lightsensor.passivate();
int delay = 1000; // delay for 5 sec.
int period = 100; // repeat every sec.
Timer timer = new Timer();
System.out.println("starting timertask");
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println(dataLightOff.getLast() + "," + dataLightOn.getLast());
g.setColor(Color.WHITE);
g.fillRect(0,0,1000,500);
for(int i = 0; i < 99; i ++){
g.setColor(Color.RED);
g.drawLine((i+1)*10,500-(((Integer)dataLightOff.get(i+1)).intValue())*5,i*10
,500-(((Integer)dataLightOff.get(i)).intValue())*5);
g.setColor(Color.GREEN);
g.drawLine((i+1)*10,500-(((Integer)dataLightOn.get(i+1)).intValue())*5,i*10
,500-(((Integer)dataLightOn.get(i)).intValue())*5);
}
lightsensor.passivate();
try {
Thread.sleep(25);
} catch (InterruptedException e) {
e.printStackTrace();
}
dataLightOff.add(new Integer(lightsensor.getLightPercent()));
dataLightOff.removeFirst();
lightsensor.activate();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
dataLightOn.add(new Integer(lightsensor.getLightPercent()));
dataLightOn.removeFirst();
}
}, delay, period);
}
}
That's my code. The light never turns off. Anyone know what's going on? Does the passivate() method just not work?
