package lejos.nxt.addon; import lejos.nxt.*; /* * WARNING: THIS CLASS IS SHARED BETWEEN THE classes AND pccomms PROJECTS. * DO NOT EDIT THE VERSION IN pccomms AS IT WILL BE OVERWRITTEN WHEN THE PROJECT IS BUILT. */ /** * Supports HiTechnics EOPD (Electro Optical Proximity Detector) sensor.<br> * This sensor is used to detect objects and small changes in distance to a target. * Unlike the lego light sensor it is not affected by other light sources. * * @author Michael Smith <mdsmitty@gmail.com> * */ public class EOPD implements SensorConstants{ ADSensorPort port; /** * By default the sensor is short range. * @param port NXT sensor port 1-4 */ public EOPD (ADSensorPort port){ this.port = port; port.setTypeAndMode(TYPE_LIGHT_INACTIVE, MODE_PCTFULLSCALE); } /** * * @param port NXT sensor port 1-4. * @param longRange true = long range false = short range. */ public EOPD(ADSensorPort port, boolean longRange) { this.port = port; port.setTypeAndMode((longRange ? TYPE_LIGHT_ACTIVE : TYPE_LIGHT_INACTIVE), MODE_PCTFULLSCALE); } /** * Changes the sensor to short range mode. * */ public void setModeShort(){ port.setTypeAndMode(TYPE_LIGHT_INACTIVE, MODE_PCTFULLSCALE); } /** * Changes the port to long range mode. * */ public void setModeLong(){ port.setTypeAndMode(TYPE_LIGHT_ACTIVE, MODE_PCTFULLSCALE); } /** * @return The raw value is returned. * */ public int readRawValue() { return port.readRawValue(); } /** * * @return A value between 0 and 100. This mimics the HiTechnic * programming block. */ public int processedValue() { return (int)Math.sqrt((1023-port.readRawValue())*10); } }