120 int16_t result = _asosw.sendPacket(tx);
153 uint8_t endstop0Pin = 0xFF,
154 uint16_t endstop0TriggerValue = 0x0000,
155 uint16_t endstop0OutputValue = 0x0000,
156 bool endstop0GreaterThanOrEqual =
false,
157 uint8_t endstop1Pin = 0xFF,
158 uint16_t endstop1TriggerValue = 0x0000,
159 uint16_t endstop1OutputValue = 0x0000,
160 bool endstop1GreaterThanOrEqual =
false)
171 int16_t result = _asosw.sendPacket(tx);
186 int16_t result = _asosw.sendPacket(tx);
198 (uint8_t)(endstop0GreaterThanOrEqual ? 1 : 0),
200 (uint8_t)(endstop1GreaterThanOrEqual ? 1 : 0)
202 return(_asosw.sendPacket(tx));
225 int16_t result = _asosw.sendPacket(tx);
251 return(_asosw.sendPacket(tx));
278 return(_asosw.sendPacket(tx));
297 return(_asosw.sendPacket(tx));
320 return(_asosw.sendPacket(tx));
345 SW_LE16(maximumChangecounts),0x55,
347 int16_t result = _asosw.sendPacket(tx);
353 if (maximumDecrementCounts > 0)
359 SW_LE16(maximumDecrementCounts),0x55,0x55
361 int16_t result = _asosw.sendPacket(tx);
372 (uint8_t)samplePeriod,
375 return(_asosw.sendPacket(tx));
402 int16_t result = _asosw.sendPacket(tx);
413 (uint8_t)samplePeriod,
416 return(_asosw.sendPacket(tx));
434 int16_t
writeHysteresis(uint16_t lowLimit, uint16_t lowOutputValue, uint16_t highLimit, uint16_t highOutputValue, uint16_t initialOutputValue)
444 int16_t result = _asosw.sendPacket(tx);
if (result < 0) {
return(result); }
455 int16_t result = _asosw.sendPacket(tx);
if (result < 0) {
return(result); }
465 int16_t result = _asosw.sendPacket(tx);
if (result < 0) {
return(result); }
490 int16_t
writeRamp(uint16_t slowIncrement, uint16_t incrementThreshold, uint16_t fastIncrement,
Period samplePeriod,
RampMode rampMode)
497 (uint8_t) samplePeriod,
500 int16_t result = _asosw.sendPacket(tx);
if (result < 0) {
return(result); }
511 int16_t result = _asosw.sendPacket(tx);
if (result < 0) {
return(result); }
519 (uint8_t) rampMode, 0x55
521 int16_t result = _asosw.sendPacket(tx);
if (result < 0) {
return(result); }
562 int16_t
writePID(uint16_t kp, uint16_t ki, uint16_t kd,uint16_t target,
Period samplePeriod, uint8_t targetPin = 255,
bool biDirectional =
false)
572 int16_t result = _asosw.sendPacket(tx);
if (result < 0) {
return(result); }
582 int16_t result = _asosw.sendPacket(tx);
if (result < 0) {
return(result); }
590 (uint8_t)samplePeriod,
593 int16_t result = _asosw.sendPacket(tx);
if (result < 0) {
return(result); }
602 int16_t result = _asosw.sendPacket(tx);
if (result < 0) {
return(result); }
613 int16_t result = _asosw.sendPacket(tx);
if (result < 0) {
return(result); }
633 0x55, 0x55,0x55,0x55,
636 if (_asosw.sendPacket(tx, rx) >= 0)
638 return(rx[4] + (uint16_t)rx[5] * 256);
653 (byte)(target & 0xFF),(byte)(target >> 8),0x55,0x55
655 return _asosw.sendPacket(tx);
667 _asosw.sendPacket(tx, rx);
669 memcpy(&returnVal,&rx[4],4);
685 _asosw.sendPacket(tx, rx);
688 memcpy(&returnVal,&rx[4],4);
702 _asosw.sendPacket(tx, rx);
705 memcpy(&returnVal,&rx[4],4);
719 _asosw.sendPacket(tx, rx);
722 memcpy(&returnVal,&rx[4],4);
736 _asosw.sendPacket(tx, rx);
739 memcpy(&returnVal,&rx[4],4);
753 _asosw.sendPacket(tx, rx);
756 memcpy(&returnVal,&rx[4],4);
770 _asosw.sendPacket(tx, rx);
772 return ((uint16_t)(rx[4] + 256 * rx[5]));
793 SW_LE16(IndexInUserMemory),0x55,0x55 };
794 return _asosw.sendPacket(tx);
798 virtual uint8_t
pin() = 0;
#define SW_LE16(_a)
Convert a uint16_t to two bytes in little endian format for array initialization.
@ CONFIGURE_PIN_OUTPUTSCALE
(210)
int16_t writeScalingEnabled(bool enabled, uint8_t sourcePin)
Enable scaling and set which pin or public data is used as the input source.
int16_t writeTimeout(uint16_t timeout_mS, uint16_t timeoutOutputValue)
Enable a timeout value which will cause the output to go to a default value if not updated.
int16_t writeEndstops(uint8_t endstop0Pin=0xFF, uint16_t endstop0TriggerValue=0x0000, uint16_t endstop0OutputValue=0x0000, bool endstop0GreaterThanOrEqual=false, uint8_t endstop1Pin=0xFF, uint16_t endstop1TriggerValue=0x0000, uint16_t endstop1OutputValue=0x0000, bool endstop1GreaterThanOrEqual=false)
Configure up to two endstop inputs which can override the Scaled Output value.
int16_t writeHysteresis(uint16_t lowLimit, uint16_t lowOutputValue, uint16_t highLimit, uint16_t highOutputValue, uint16_t initialOutputValue)
Controls the output based on hystersis control.
uint16_t ReadLastTarget()
int16_t Enable2DLookupOutputScaling(uint16_t IndexInUserMemory)
Set Up 2D Lookup Output Scaling.
SerialWombatAbstractScaledOutput(SerialWombatChip &sw)
Constructor for the SerialWombatAbstractScaledOutput Class.
int16_t writeOutputScaling(uint16_t outputMin, uint16_t outputMax)
Reduces the output range from 0 to 65535 to user specified range.
int16_t writeRateControl(Period samplePeriod, uint16_t maximumChangecounts, uint16_t maximumDecrementCounts=0)
Controls how fast an ouput can change in counts.
int16_t writeRamp(uint16_t slowIncrement, uint16_t incrementThreshold, uint16_t fastIncrement, Period samplePeriod, RampMode rampMode)
Configure the scaled output block into Ramp control mode.
int32_t PIDGetLastProportionalEffort()
int16_t writeScalingTargetValue(uint16_t target)
The target input value for PID control.
virtual uint8_t pin()=0
Facilitates inheritance.
int16_t write1stOrderFiltering(Period samplePeriod, uint16_t filterConstant)
Controls how fast an ouput can change based on filtering.
uint16_t readLastOutputValue()
Request Last Output Value.
int32_t PIDGetLastEffort()
int16_t writeInputScaling(uint16_t inputMin, uint16_t inputMax)
Scale incoming values to a range of 0 to 65535.
int32_t PIDGetLastDerivativeEffort()
int32_t PIDGetLastIntegratorEffort()
int16_t writeScalingTargetValueResetIntegrator(uint16_t target)
int16_t writePID(uint16_t kp, uint16_t ki, uint16_t kd, uint16_t target, Period samplePeriod, uint8_t targetPin=255, bool biDirectional=false)
Configure the scaled output block into PID control mode.
int16_t writeScalingInvertedInput(bool inverted)
if enabled subtract the input value from 65535 before doing any other processing.
int32_t PIDGetLastIntegrator()
int32_t PIDGetLastError()
virtual uint8_t swPinModeNumber()=0
Facilitates inheritance.
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.