WPILibC++  2021.3.1

#include <frc/AnalogInput.h>

## Public Member Functions

int GetValue () const
Get a sample straight from this channel. More...

int GetAverageValue () const
Get a sample from the output of the oversample and average engine for this channel. More...

double GetVoltage () const
Get a scaled sample straight from this channel. More...

double GetAverageVoltage () const
Get a scaled sample from the output of the oversample and average engine for this channel. More...

int GetChannel () const
Get the channel number. More...

void SetAverageBits (int bits)
Set the number of averaging bits. More...

int GetAverageBits () const
Get the number of averaging bits previously configured. More...

void SetOversampleBits (int bits)
Set the number of oversample bits. More...

int GetOversampleBits () const
Get the number of oversample bits previously configured. More...

int GetLSBWeight () const
Get the factory scaling least significant bit weight constant. More...

int GetOffset () const
Get the factory scaling offset constant. More...

bool IsAccumulatorChannel () const
Is the channel attached to an accumulator. More...

void InitAccumulator ()
Initialize the accumulator.

void SetAccumulatorInitialValue (int64_t value)
Set an initial value for the accumulator. More...

void ResetAccumulator ()
Resets the accumulator to the initial value.

void SetAccumulatorCenter (int center)
Set the center value of the accumulator. More...

int64_t GetAccumulatorValue () const

int64_t GetAccumulatorCount () const
Read the number of accumulated values. More...

void GetAccumulatorOutput (int64_t &value, int64_t &count) const
Read the accumulated value and the number of accumulated values atomically. More...

double PIDGet () override
Get the Average value for the PID Source base object. More...

void SetSimDevice (HAL_SimDeviceHandle device)
Indicates this input is used by a simulated device. More...

void InitSendable (SendableBuilder &builder) override
Initializes this Sendable object. More...

Public Member Functions inherited from frc::ErrorBase
ErrorBase (const ErrorBase &)=default

ErrorBaseoperator= (const ErrorBase &)=default

ErrorBase (ErrorBase &&)=default

ErrorBaseoperator= (ErrorBase &&)=default

virtual ErrorGetError ()
Retrieve the current error. More...

virtual const ErrorGetError () const
Retrieve the current error. More...

virtual void ClearError () const
Clear the current error information associated with this sensor.

virtual void SetErrnoError (const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber) const
Set error information associated with a C library call that set an error to the "errno" global variable. More...

virtual void SetImaqError (int success, const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber) const
Set the current error information associated from the nivision Imaq API. More...

virtual void SetError (Error::Code code, const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber) const
Set the current error information associated with this sensor. More...

virtual void SetErrorRange (Error::Code code, int32_t minRange, int32_t maxRange, int32_t requestedValue, const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber) const
Set the current error information associated with this sensor. More...

virtual void SetWPIError (const wpi::Twine &errorMessage, Error::Code code, const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber) const
Set the current error information associated with this sensor. More...

virtual void CloneError (const ErrorBase &rhs) const

virtual bool StatusIsFatal () const
Check if the current error code represents a fatal error. More...

void ClearGlobalErrors ()
Clear global errors.

Public Member Functions inherited from frc::PIDSource
virtual void SetPIDSourceType (PIDSourceType pidSource)
Set which parameter you are using as a process control variable. More...

virtual PIDSourceType GetPIDSourceType () const

Public Member Functions inherited from frc::SendableHelper< AnalogInput >
SendableHelper (const SendableHelper &rhs)=default

SendableHelper (SendableHelper &&rhs)

SendableHelperoperator= (const SendableHelper &rhs)=default

SendableHelperoperator= (SendableHelper &&rhs)

std::string GetName () const
Gets the name of this Sendable object. More...

void SetName (const wpi::Twine &name)
Sets the name of this Sendable object. More...

void SetName (const wpi::Twine &subsystem, const wpi::Twine &name)
Sets both the subsystem name and device name of this Sendable object. More...

std::string GetSubsystem () const
Gets the subsystem name of this Sendable object. More...

void SetSubsystem (const wpi::Twine &subsystem)
Sets the subsystem name of this Sendable object. More...

## Static Public Member Functions

static void SetSampleRate (double samplesPerSecond)
Set the sample rate per channel for all analog channels. More...

static double GetSampleRate ()
Get the current sample rate for all channels. More...

Static Public Member Functions inherited from frc::ErrorBase
static void SetGlobalError (Error::Code code, const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber)

static void SetGlobalWPIError (const wpi::Twine &errorMessage, const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber)

static Error GetGlobalError ()
Retrieve the last global error.

static std::vector< ErrorGetGlobalErrors ()
Retrieve all global errors.

## Static Public Attributes

static constexpr int kAccumulatorModuleNumber = 1

static constexpr int kAccumulatorNumChannels = 2

static constexpr int kAccumulatorChannels [kAccumulatorNumChannels] = {0, 1}

## Friends

class AnalogTrigger

class AnalogGyro

class DMA

class DMASample

Protected Member Functions inherited from frc::SendableHelper< AnalogInput >
void SetName (const wpi::Twine &moduleType, int channel)
Sets the name of the sensor with a channel number. More...

void SetName (const wpi::Twine &moduleType, int moduleNumber, int channel)
Sets the name of the sensor with a module and channel number. More...

void AddChild (std::shared_ptr< Sendable > child)

Protected Attributes inherited from frc::ErrorBase
Error m_error

Protected Attributes inherited from frc::PIDSource
PIDSourceType m_pidSource = PIDSourceType::kDisplacement

## Detailed Description

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 & Destructor Documentation

explicit

Parameters
 channel The channel number on the roboRIO to represent. 0-3 are on-board 4-7 are on the MXP port.

## ◆ GetAccumulatorCount()

Read the number of accumulated values.

Read the count of the accumulated values since the accumulator was last Reset().

Returns
The number of times samples from the channel were accumulated.

## ◆ GetAccumulatorOutput()

 void frc::AnalogInput::GetAccumulatorOutput ( int64_t & value, int64_t & count ) const

Read the accumulated value and the number of accumulated values atomically.

This function reads the value and count from the FPGA atomically. This can be used for averaging.

Parameters
 value Reference to the 64-bit accumulated output. count Reference to the number of accumulation cycles.

## ◆ GetAccumulatorValue()

Read the value that has been accumulating. The accumulator is attached after the oversample and average engine.

Returns
The 64-bit value accumulated since the last Reset().

## ◆ GetAverageBits()

Get the number of averaging bits previously configured.

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
Number of bits of averaging previously configured.

## ◆ 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 the module on this channel.

Use GetAverageVoltage() to get the analog value in calibrated units.

Returns
A sample from the oversample and average engine for this channel.

## ◆ 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.

## ◆ GetChannel()

Get the channel number.

Returns
The channel number.

## ◆ GetLSBWeight()

Get the factory scaling least significant bit weight constant.

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

Returns
Least significant bit weight.

## ◆ GetOffset()

Get the factory scaling offset constant.

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

Returns
Offset constant.

## ◆ GetOversampleBits()

Get the number of oversample bits previously configured.

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
Number of bits of oversampling previously configured.

## ◆ GetSampleRate()

static

Get the current sample rate for all channels.

Returns
Sample rate.

## ◆ GetValue()

Get a sample straight from this channel.

The sample is a 12-bit value representing the 0V to 5V range of the A/D converter in the module. 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.

## ◆ 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.

## ◆ InitSendable()

 void frc::AnalogInput::InitSendable ( SendableBuilder & builder )
overridevirtual

Initializes this Sendable object.

Parameters
 builder sendable builder

Implements frc::Sendable.

## ◆ IsAccumulatorChannel()

Is the channel attached to an accumulator.

Returns

## ◆ PIDGet()

overridevirtual

Get the Average value for the PID Source base object.

Returns
The average voltage.

Implements frc::PIDSource.

## ◆ SetAccumulatorCenter()

 void frc::AnalogInput::SetAccumulatorCenter ( int center )

Set the center value of the accumulator.

The center value is subtracted from each A/D value before it is added to the accumulator. This is used for the center value of devices like gyros and accelerometers to take the device offset into account when integrating.

This center value is based on the output of the oversampled and averaged source from the accumulator channel. Because of this, any non-zero oversample bits will affect the size of the value for this field.

## ◆ SetAccumulatorInitialValue()

 void frc::AnalogInput::SetAccumulatorInitialValue ( int64_t value )

Set an initial value for the accumulator.

This will be added to all values returned to the user.

Parameters
 initialValue The value that the accumulator should start from when reset.

## ◆ SetAverageBits()

 void frc::AnalogInput::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.

Use averaging to improve the stability of your measurement at the expense of sampling rate. The averaging is done automatically in the FPGA.

Parameters
 bits Number of bits of averaging.

## ◆ SetOversampleBits()

 void frc::AnalogInput::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. Use oversampling to improve the resolution of your measurements at the expense of sampling rate. The oversampling is done automatically in the FPGA.

Parameters
 bits Number of bits of oversampling.

## ◆ SetSampleRate()

 static void frc::AnalogInput::SetSampleRate ( double samplesPerSecond )
static

Set the sample rate per channel for all analog channels.

The maximum rate is 500kS/s divided by the number of channels in use. This is 62500 samples/s per channel.

Parameters
 samplesPerSecond The number of samples per second.

## ◆ SetSimDevice()

 void frc::AnalogInput::SetSimDevice ( HAL_SimDeviceHandle device )

Indicates this input is used by a simulated device.

Parameters
 device simulated device handle

The documentation for this class was generated from the following file: