rendered paste bodyimport lejos.nxt.*;import lejos.util.*;public class SensorActuatorConnection extends Thread implements TimerListener{ private RCXLightSensor m_sensorInterface = null; private MotorPort[] m_motorAbstraction = null; private DataLogger m_dlSensor = null; private DataLogger m_dlMotor = null; private final int m_low = 68; private final int m_lowMotor = 50; private final int m_high = 80; private final int m_highMotor = 100; private int m_sensorResult = 0; private int m_motorPower = 0; private Timer m_timer = null; public SensorActuatorConnection(RCXLightSensor sensorInterface, MotorPort[] actuatorAbstraction, String fileFix) { m_sensorInterface = sensorInterface; m_motorAbstraction = actuatorAbstraction; m_dlSensor = new DataLogger("dlS-" + fileFix + ".txt"); m_dlMotor = new DataLogger("dlM-" + fileFix + ".txt"); m_timer = new Timer(100, this); } public void timedOut() { m_dlSensor.writeSample(m_sensorResult); m_dlMotor.writeSample(m_motorPower); } public void run() { m_sensorInterface.activate(); while(!Thread.currentThread().isInterrupted()) { LCD.clear(); m_sensorResult = m_sensorInterface.readValue(); LCD.drawString("Sensorinput: ", 0,0); LCD.drawInt(m_sensorResult,0,1); m_motorPower = ( ( ( (100 - m_sensorResult) - m_low ) * (m_highMotor - m_lowMotor) )/(m_high - m_low)) + m_lowMotor; LCD.drawString("Motoroutput: ", 0,2); LCD.drawInt(m_motorPower,0,3); LCD.refresh(); for(int i = 0; i < m_motorAbstraction.length; i++) m_motorAbstraction[i].controlMotor(m_motorPower,1 /* = forward */); try { Thread.sleep(10); } catch(InterruptedException ex){} } m_dlSensor.close(); m_dlMotor.close(); }}