Java Maxbotix Ultrasonic Sensor Code

This is code for all of you using the maxbotix EZ1 sensor with java.
This code is a direct port from last years c++ to java for this year, its not 100% tested yet so if any of you have problems with it just post about it.

package edu.wpi.first.wpilibj.samples;

import edu.wpi.first.wpilibj.*;

public class MaxbotixUltrasonic extends SensorBase {

    private final double IN_TO_CM_CONVERSION = 2.54;
    private boolean use_units;    //Are we using units or just returning voltage?
    private double min_voltage;	  //Minimum voltage the ultrasonic sensor can return
    private double voltage_range; //The range of the voltages returned by the sensor (maximum - minimum)
    private double min_distance;  //Minimum distance the ultrasonic sensor can return in inches
    private double distance_range;//The range of the distances returned by this class in inches (maximum - minimum)
    AnalogChannel channel;
    //constructor
    public MaxbotixUltrasonic(int _channel) {
        channel = new AnalogChannel(_channel);
        //default values
		use_units = true;
		min_voltage = .5;
		voltage_range = 5.0 - min_voltage;
		min_distance = 3.0;
		distance_range = 60.0 - min_distance;
    }
    //constructor
    public MaxbotixUltrasonic(int _channel, boolean _use_units, double _min_voltage,
            double _max_voltage, double _min_distance, double _max_distance) {
        channel = new AnalogChannel(_channel);
        //only use unit-specific variables if we're using units
        if (_use_units) {
            use_units = true;
            min_voltage = _min_voltage;
            voltage_range = _max_voltage - _min_voltage;
            min_distance = _min_distance;
            distance_range = _max_distance - _min_distance;
        }
    }
    // Just get the voltage.
    double GetVoltage() {
        return channel.getVoltage();
    }
    /* GetRangeInInches
     * Returns the range in inches
     * Returns -1.0 if units are not being used
     * Returns -2.0 if the voltage is below the minimum voltage
     */

    double GetRangeInInches() {
        double range;
        //if we're not using units, return -1, a range that will most likely never be returned
        if (!use_units) {
            return -1.0;
        }
        range = channel.getVoltage();
        if (range < min_voltage) {
            return -2.0;
        }
        //first, normalize the voltage
        range = (range - min_voltage) / voltage_range;
        //next, denormalize to the unit range
        range = (range * distance_range) + min_distance;
        return range;
    }
    /* GetRangeInCM
     * Returns the range in centimeters
     * Returns -1.0 if units are not being used
     * Returns -2.0 if the voltage is below the minimum voltage
     */

    double GetRangeInCM() {
        double range;
        //if we're not using units, return -1, a range that will most likely never be returned
        if (!use_units) {
            return -1.0;
        }
        range = channel.getVoltage();
        if (range < min_voltage) {
            return -2.0;
        }
        //first, normalize the voltage
        range = (range - min_voltage) / voltage_range;
        //next, denormalize to the unit range
        range = (range * distance_range) + min_distance;
        //finally, convert to centimeters
        range *= IN_TO_CM_CONVERSION;
        return range;
    }
}

```<br><br><a class='attachment' href='/uploads/default/original/3X/7/d/7d9f036aeea2581000a65598e7996b9f4ead7fa2.zip'>MaxbotixUltrasonic.zip</a> (980 Bytes)<br><br><br><a class='attachment' href='/uploads/default/original/3X/7/d/7d9f036aeea2581000a65598e7996b9f4ead7fa2.zip'>MaxbotixUltrasonic.zip</a> (980 Bytes)<br>

Thank you, this will save us some time! BTW: Have you tried to use the serial communications on the new unit?