Class AnalogInput

java.lang.Object
edu.wpi.first.wpilibj.AnalogInput
All Implemented Interfaces:
Sendable, AutoCloseable

public class AnalogInput extends Object implements Sendable, AutoCloseable
Analog channel class.

Each analog channel is read from hardware as a 12-bit number representing 0V to 3.3V.

Connected to each analog channel is an averaging and oversampling engine. This engine accumulates the specified ( by setAverageBits() and setOversampleBits() ) number of samples before returning a new value. This is not a sliding window average. The only difference between the oversampled samples and the averaged samples is that the oversampled samples are simply accumulated effectively increasing the resolution, while the averaged samples are divided by the number of samples to retain the resolution, but get more stable values.

  • Constructor Details

    • AnalogInput

      public AnalogInput(int channel)
      Construct an analog channel.
      Parameters:
      channel - The channel number to represent. 0-3 are on-board 4-7 are on the MXP port.
  • Method Details

    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
    • getValue

      public int getValue()
      Get a sample straight from this channel. The sample is a 12-bit value representing the 0V to 3.3V range of the A/D converter. The units are in A/D converter codes. Use GetVoltage() to get the analog value in calibrated units.
      Returns:
      A sample straight from this channel.
    • getAverageValue

      public int getAverageValue()
      Get a sample from the output of the oversample and average engine for this channel. The sample is 12-bit + the bits configured in SetOversampleBits(). The value configured in setAverageBits() will cause this value to be averaged 2^bits number of samples. This is not a sliding window. The sample will not change until 2^(OversampleBits + AverageBits) samples have been acquired from this channel. Use getAverageVoltage() to get the analog value in calibrated units.
      Returns:
      A sample from the oversample and average engine for this channel.
    • getVoltage

      public double getVoltage()
      Get a scaled sample straight from this channel. The value is scaled to units of Volts using the calibrated scaling data from getLSBWeight() and getOffset().
      Returns:
      A scaled sample straight from this channel.
    • getAverageVoltage

      public double getAverageVoltage()
      Get a scaled sample from the output of the oversample and average engine for this channel. The value is scaled to units of Volts using the calibrated scaling data from getLSBWeight() and getOffset(). Using oversampling will cause this value to be higher resolution, but it will update more slowly. Using averaging will cause this value to be more stable, but it will update more slowly.
      Returns:
      A scaled sample from the output of the oversample and average engine for this channel.
    • getLSBWeight

      public long getLSBWeight()
      Get the factory scaling the least significant bit weight constant. The least significant bit weight constant for the channel that was calibrated in manufacturing and stored in an eeprom.

      Volts = ((LSB_Weight * 1e-9) * raw) - (Offset * 1e-9)

      Returns:
      Least significant bit weight.
    • getOffset

      public int getOffset()
      Get the factory scaling offset constant. The offset constant for the channel that was calibrated in manufacturing and stored in an eeprom.

      Volts = ((LSB_Weight * 1e-9) * raw) - (Offset * 1e-9)

      Returns:
      Offset constant.
    • getChannel

      public int getChannel()
      Get the channel number.
      Returns:
      The channel number.
    • setAverageBits

      public void setAverageBits(int bits)
      Set the number of averaging bits. This sets the number of averaging bits. The actual number of averaged samples is 2^bits. The averaging is done automatically in the FPGA.
      Parameters:
      bits - The number of averaging bits.
    • getAverageBits

      public int getAverageBits()
      Get the number of averaging bits. This gets the number of averaging bits from the FPGA. The actual number of averaged samples is 2^bits. The averaging is done automatically in the FPGA.
      Returns:
      The number of averaging bits.
    • setOversampleBits

      public void setOversampleBits(int bits)
      Set the number of oversample bits. This sets the number of oversample bits. The actual number of oversampled values is 2^bits. The oversampling is done automatically in the FPGA.
      Parameters:
      bits - The number of oversample bits.
    • getOversampleBits

      public int getOversampleBits()
      Get the number of oversample bits. This gets the number of oversample bits from the FPGA. The actual number of oversampled values is 2^bits. The oversampling is done automatically in the FPGA.
      Returns:
      The number of oversample bits.
    • setGlobalSampleRate

      public static void setGlobalSampleRate(double samplesPerSecond)
      Set the sample rate per channel.

      This is a global setting for all channels. The maximum rate is 500kS/s divided by the number of channels in use. This is 62500 samples/s per channel if all 8 channels are used.

      Parameters:
      samplesPerSecond - The number of samples per second.
    • getGlobalSampleRate

      public static double getGlobalSampleRate()
      Get the current sample rate.

      This assumes one entry in the scan list. This is a global setting for all channels.

      Returns:
      Sample rate.
    • setSimDevice

      public void setSimDevice(SimDevice device)
      Indicates this input is used by a simulated device.
      Parameters:
      device - simulated device handle
    • initSendable

      public void initSendable(SendableBuilder builder)
      Description copied from interface: Sendable
      Initializes this Sendable object.
      Specified by:
      initSendable in interface Sendable
      Parameters:
      builder - sendable builder