Serial Wombat Arduino Library
Public Member Functions | List of all members
SerialWombatResistanceInput Class Reference

A class to make resistance measurements with the Serial Wombat 18AB chip. More...

#include <SerialWombatResistanceInput.h>

Inheritance diagram for SerialWombatResistanceInput:
SerialWombatPin SerialWombatAbstractProcessedInput

Public Member Functions

 SerialWombatResistanceInput (SerialWombatChip &serialWombatChip)
 Constructor for the SerialWombatResistanceInput class. More...
 
int16_t begin (uint8_t pin)
 Initialize a resistance input on a given pin. More...
 
int16_t begin (uint8_t pin, uint16_t averageSamples, uint16_t filterConstant)
 Initialize a resistance input on a given pin. More...
 
int16_t begin (uint8_t pin, uint16_t averageSamples, uint16_t filterConstant, ResistanceInputPublicDataOutput output)
 Initialize a resistance input on a given pin. More...
 
uint16_t readFilteredOhms ()
 Retreive a filtered Resistance measurement. More...
 
uint16_t readAveragedOhms ()
 Retreive an averaged Resistance measurement. More...
 
uint16_t readMaximumOhms (bool resetAfterRead)
 Retreive the maximum single sample Resistance value in Ohms. More...
 
uint16_t readMinimumOhms (bool resetAfterRead)
 Retreive the maximum single sample Resistance value in Ohms. More...
 
uint8_t pin ()
 Used for inheritance. More...
 
uint8_t swPinModeNumber ()
 Used for ineheritance. More...
 
- Public Member Functions inherited from SerialWombatPin
 SerialWombatPin (SerialWombatChip &serialWombatChip)
 Instantiates a Serial Wombat Pin. More...
 
 SerialWombatPin (SerialWombatChip &serialWombatChip, uint8_t pin)
 Instantiates a Serial Wombat Pin. More...
 
uint16_t readPublicData ()
 Read the 16 Bit public data associated with this pin. More...
 
void pinMode (uint8_t mode, bool pullDown=false, bool openDrain=false)
 Set pin to INPUT or OUTPUT, with options for pull Ups and open Drain settings. More...
 
void digitalWrite (uint8_t val)
 Set output pin High or Low. More...
 
int digitalRead ()
 Reads the state of the Pin. More...
 
uint16_t writePublicData (uint16_t value)
 Write a 16 bit value to this pin. More...
 
uint8_t pin ()
 Returns the current SW pin number. Used primarily for virtual calls by derived classes. More...
 
uint8_t swPinModeNumber ()
 Returns the Mode number. Used primarily by derived classes to populate packet data. More...
 
- Public Member Functions inherited from SerialWombatAbstractProcessedInput
 SerialWombatAbstractProcessedInput (SerialWombatChip &sw)
 Constructor for the SerialWombatAbstractScaledOutput Class. More...
 
int16_t writeInverted (bool inverted)
 if enabled subtract the input value from 65535 before doing any other processing. More...
 
int16_t writeFirstOrderFilteringConstant (uint16_t constant)
 Set a first order filtering constant to be applied to the signal Higher is heavier filtering. More...
 
int16_t writeAveragingNumberOfSamples (uint16_t numberOfSamples)
 Set a number of samples to average for each update of the downstream signal. More...
 
int16_t writeExcludeBelowAbove (uint16_t low, uint16_t high)
 Sets input value ranges which are discarded rather than processed. More...
 
int16_t configureQueue (SerialWombatQueue *queue, Period period, bool queueHighByte=true, bool queueLowByte=true)
 Sets up the queueing feature for this pin mode. Queue must have been initialized prior to this queue. More...
 
int16_t configureOutputValue (OutputValue outputValue)
 Configures whether the pin's public data value is averaged, filtered, or neither. More...
 
int16_t writeTransformScaleRange (uint16_t min, uint16_t max)
 Scale incoming values to a range of 0 to 65535. More...
 
int16_t writeTransformLinearMXB (int32_t m, int32_t b)
 Scale incoming values based on an mx+b linear equation. More...
 
int16_t configureIntegrator (uint16_t negativeMaxIndex, uint16_t negativeMidIndex, uint16_t negativeDeadZone, uint16_t positiveDeadZone, uint16_t positiveMidIndex, uint16_t positiveMaxIndex, uint16_t midIncrement, uint16_t maxIncrement, uint16_t initialValue, uint8_t updateFrequencyMask=0)
 Sort incoming data into one of 5 ranges, and integrate based on linear interpolation in those ranges. More...
 
int16_t writeProcessedInputEnable (bool enabled)
 Enables or disables all input processing functions If disabled, the raw input value is placed directly in the pin's 16 bit public data buffer. More...
 
uint16_t readMinimum (bool resetAfterRead=false)
 Retreive the maximum public data output value since the last call with reset= true. More...
 
uint16_t readMaximum (bool resetAfterRead=false)
 Retreive the minimum public data output value since the last call with reset= true. More...
 
uint16_t readAverage ()
 Retreive the last completed averaged value. More...
 
uint16_t readFiltered ()
 Retreive the filtered value. More...
 

Additional Inherited Members

- Public Types inherited from SerialWombatAbstractProcessedInput
enum  Period {
  PERIOD_1mS = 0, PERIOD_2mS = 1, PERIOD_4mS = 2, PERIOD_8mS = 3,
  PERIOD_16mS = 4, PERIOD_32mS = 5, PERIOD_64mS = 6, PERIOD_128mS = 7,
  PERIOD_256mS = 8, PERIOD_512mS = 9, PERIOD_1024mS = 10
}
 
enum  OutputValue { RAW = 0, FIRST_ORDER_FILTERED = 1, AVERAGE = 2 }
 
enum  Transform { NONE = 0, SCALE_RANGE = 1, LINEAR_MXB = 2 }
 
- Protected Attributes inherited from SerialWombatPin
uint8_t _pin = 255
 
SerialWombatChip_sw
 
uint8_t _pinMode = 0
 

Detailed Description

A class to make resistance measurements with the Serial Wombat 18AB chip.

The SerialWombatResistanceInput class is used to make resistance measurements on a given pin up to about 60 kOhm.

This pin mode is only available on the SerialWombat 18AB chip

Any analog-capable pin may be used to make a measurement (0-4, 16-19).

Averaging of samples and first order IIR filtering (20 Hz sampling) of input are available

For a good explanation of 1st order FIR filter calculations, see: https://www.monocilindro.com/2017/04/08/how-to-implement-a-1st-order-iir-filter-in-5-minutes/

Filtering adds lag. The higher the filter constant value, the longer it takes for the filter to settle when given a steady input.

Declare and initialize a SerialWombatResistanceInput instance for each pin being used as a resistance input.

A tutorial is available here:

https://youtu.be/8ynBmxZSE_M

Constructor & Destructor Documentation

◆ SerialWombatResistanceInput()

SerialWombatResistanceInput::SerialWombatResistanceInput ( SerialWombatChip serialWombatChip)
inline

Constructor for the SerialWombatResistanceInput class.

Parameters
SerialWombata reference to the Serial Wombat chip on which the Resistance Input will be measured

Member Function Documentation

◆ begin() [1/3]

int16_t SerialWombatResistanceInput::begin ( uint8_t  pin)
inline

Initialize a resistance input on a given pin.

This intialization turns on sample averaging to 64 samples

Parameters
pinThe Serial Wombat pin to set. Must be an analog pin (0-4, 16-19)
Returns
Returns a negative error code if initialization failed.

◆ begin() [2/3]

int16_t SerialWombatResistanceInput::begin ( uint8_t  pin,
uint16_t  averageSamples,
uint16_t  filterConstant 
)
inline

Initialize a resistance input on a given pin.

Parameters
pinThe Serial Wombat pin to set. Must be an analog pin (0-4, 16-19)
averageSamplesNumber of samples to average.
filterConstantFirst Order IIR filter constant, expressed as 1/65536ths . Values closer to 65536 give heavier filtering. Sample frequency is 20Hz.
Returns
Returns a negative error code if initialization failed.

◆ begin() [3/3]

int16_t SerialWombatResistanceInput::begin ( uint8_t  pin,
uint16_t  averageSamples,
uint16_t  filterConstant,
ResistanceInputPublicDataOutput  output 
)
inline

Initialize a resistance input on a given pin.

Parameters
pinThe Serial Wombat pin to set. Must be an analog pin (0-4, 16-19)
averageSamplesNumber of samples to average.
filterConstantFirst Order IIR filter constant, expressed as 1/65536ths . Values closer to 65536 give heavier filtering. Sample frequency is 20 Hz.
publicDataOutputWhat to output as pin public data
Returns
Returns a negative error code if initialization failed.

◆ pin()

uint8_t SerialWombatResistanceInput::pin ( )
inlinevirtual

Used for inheritance.

Implements SerialWombatAbstractProcessedInput.

◆ readAveragedOhms()

uint16_t SerialWombatResistanceInput::readAveragedOhms ( )
inline

Retreive an averaged Resistance measurement.

Conversion is based on the most recent averaged Resistance value taken by the Serial Wombat at the command time.

Returns
A 16 bit unsigned value indicating the ohms of the Resistance conversion

◆ readFilteredOhms()

uint16_t SerialWombatResistanceInput::readFilteredOhms ( )
inline

Retreive a filtered Resistance measurement.

Conversion is based on the most recent filtered Resistance value taken by the Serial Wombat at the command time.

Returns
A 16 bit unsigned value indicating the filtered Resistance result

◆ readMaximumOhms()

uint16_t SerialWombatResistanceInput::readMaximumOhms ( bool  resetAfterRead)
inline

Retreive the maximum single sample Resistance value in Ohms.

The maximum value the Serial Wombat chip has seen on that pin since last reset of Min/Max

Parameters
resetAfterReadIf True, maximum value is set to 0 after read so that subsequent values become maximum. Also resets minimum to next sample.
Returns
A 16 bit unsigned value indicating maximum Resistance Ohms

◆ readMinimumOhms()

uint16_t SerialWombatResistanceInput::readMinimumOhms ( bool  resetAfterRead)
inline

Retreive the maximum single sample Resistance value in Ohms.

The maximum value the Serial Wombat chip has seen on that pin since last reset of Min/Max

Parameters
resetAfterReadIf True, maximum value is set to 0 after read so that subsequent values become maximum. Also resets minimum to next sample.
Returns
A 16 bit unsigned value indicating maximum Resistance Ohms

◆ swPinModeNumber()

uint8_t SerialWombatResistanceInput::swPinModeNumber ( )
inlinevirtual

Used for ineheritance.

Implements SerialWombatAbstractProcessedInput.