Serial Wombat Arduino Library
SerialWombatAbstractScaledOutput.h
Go to the documentation of this file.
1 #pragma once
2 /*
3 Copyright 2021 Broadwell Consulting Inc.
4 
5 "Serial Wombat" is a registered trademark of Broadwell Consulting Inc. in
6 the United States. See SerialWombat.com for usage guidance.
7 
8 Permission is hereby granted, free of charge, to any person obtaining a
9  * copy of this software and associated documentation files (the "Software"),
10  * to deal in the Software without restriction, including without limitation
11  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12  * and/or sell copies of the Software, and to permit persons to whom the
13  * Software is furnished to do so, subject to the following conditions:
14 
15 The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17 
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
22  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24  * OTHER DEALINGS IN THE SOFTWARE.
25 */
26 
27 #include "SerialWombat.h"
28 #include "limits.h"
29 
62 {
63 public:
68 
69  enum Period {
81  };
82 
96  int16_t writeTimeout(uint16_t timeout_mS, uint16_t timeoutOutputValue);
97 
104  int16_t writeScalingEnabled(bool enabled, uint8_t sourcePin);
105 
117  int16_t writeInputScaling(uint16_t inputMin, uint16_t inputMax);
118 
132  int16_t writeOutputScaling(uint16_t outputMin, uint16_t outputMax);
133 
139  int16_t writeScalingInvertedInput(bool inverted);
140 
151  int16_t writeScalingTargetValue(uint16_t target);
152 
164  int16_t writeRateControl(Period samplePeriod, uint16_t maximumChangecounts);
165 
177  int16_t write1stOrderFiltering(Period sampleRate, uint16_t filterConstant);
178 
191  int16_t writeHysteresis(uint16_t lowLimit, uint16_t lowOutputValue, uint16_t highLimit, uint16_t highOutputValue, uint16_t initialOutputValue);
193 
224  int16_t writePID(uint16_t kp, uint16_t ki, uint16_t kd,uint16_t target,Period samplePeriod);
225 
227  virtual uint8_t pin() = 0;
229  virtual uint8_t swPinModeNumber() = 0;
230 
231 private:
232  SerialWombatChip& _asosw;
233 
234 };
235 
236 
SerialWombatAbstractScaledOutput::PERIOD_256mS
@ PERIOD_256mS
Definition: SerialWombatAbstractScaledOutput.h:78
SerialWombatAbstractScaledOutput::writeTimeout
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.
Definition: SerialWombatAbstractScaledOutput.cpp:10
SerialWombatChip
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
Definition: SerialWombat.h:267
SerialWombatAbstractScaledOutput::PERIOD_64mS
@ PERIOD_64mS
Definition: SerialWombatAbstractScaledOutput.h:76
SerialWombatAbstractScaledOutput::Period
Period
Definition: SerialWombatAbstractScaledOutput.h:69
SerialWombatAbstractScaledOutput::writeInputScaling
int16_t writeInputScaling(uint16_t inputMin, uint16_t inputMax)
Scale incoming values to a range of 0 to 65535.
Definition: SerialWombatAbstractScaledOutput.cpp:40
SerialWombatAbstractScaledOutput::writeScalingEnabled
int16_t writeScalingEnabled(bool enabled, uint8_t sourcePin)
Enable scaling and set which pin or public data is used as the input source.
Definition: SerialWombatAbstractScaledOutput.cpp:27
SerialWombatAbstractScaledOutput::SerialWombatAbstractScaledOutput
SerialWombatAbstractScaledOutput(SerialWombatChip &sw)
Constructor for the SerialWombatAbstractScaledOutput Class.
Definition: SerialWombatAbstractScaledOutput.cpp:6
SerialWombatAbstractScaledOutput::PERIOD_8mS
@ PERIOD_8mS
Definition: SerialWombatAbstractScaledOutput.h:73
SerialWombatAbstractScaledOutput::PERIOD_1024mS
@ PERIOD_1024mS
Definition: SerialWombatAbstractScaledOutput.h:80
SerialWombatAbstractScaledOutput::writeOutputScaling
int16_t writeOutputScaling(uint16_t outputMin, uint16_t outputMax)
Reduces the output range from 0 to 65535 to user specified range.
Definition: SerialWombatAbstractScaledOutput.cpp:52
SerialWombatAbstractScaledOutput
SerialWombatServo, SerialWombatPWM and other proportional ouptut classes inherit from this class....
Definition: SerialWombatAbstractScaledOutput.h:61
SerialWombat.h
SerialWombatAbstractScaledOutput::PERIOD_16mS
@ PERIOD_16mS
Definition: SerialWombatAbstractScaledOutput.h:74
SerialWombatAbstractScaledOutput::write1stOrderFiltering
int16_t write1stOrderFiltering(Period sampleRate, uint16_t filterConstant)
Definition: SerialWombatAbstractScaledOutput.cpp:115
SerialWombatAbstractScaledOutput::writeScalingInvertedInput
int16_t writeScalingInvertedInput(bool inverted)
if enabled subtract the input value from 65535 before doing any other processing.
Definition: SerialWombatAbstractScaledOutput.cpp:64
SerialWombatAbstractScaledOutput::PERIOD_512mS
@ PERIOD_512mS
Definition: SerialWombatAbstractScaledOutput.h:79
SerialWombatAbstractScaledOutput::pin
virtual uint8_t pin()=0
Facilitates inheritance.
SerialWombatAbstractScaledOutput::writeRateControl
int16_t writeRateControl(Period samplePeriod, uint16_t maximumChangecounts)
Definition: SerialWombatAbstractScaledOutput.cpp:87
SerialWombatAbstractScaledOutput::PERIOD_128mS
@ PERIOD_128mS
Definition: SerialWombatAbstractScaledOutput.h:77
SerialWombatAbstractScaledOutput::PERIOD_4mS
@ PERIOD_4mS
Definition: SerialWombatAbstractScaledOutput.h:72
SerialWombatAbstractScaledOutput::PERIOD_32mS
@ PERIOD_32mS
Definition: SerialWombatAbstractScaledOutput.h:75
SerialWombatAbstractScaledOutput::writeScalingTargetValue
int16_t writeScalingTargetValue(uint16_t target)
The target input value for PID control.
Definition: SerialWombatAbstractScaledOutput.cpp:76
SerialWombatAbstractScaledOutput::PERIOD_1mS
@ PERIOD_1mS
Definition: SerialWombatAbstractScaledOutput.h:70
SerialWombatAbstractScaledOutput::swPinModeNumber
virtual uint8_t swPinModeNumber()=0
Facilitates inheritance.
SerialWombatAbstractScaledOutput::writeHysteresis
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.
Definition: SerialWombatAbstractScaledOutput.cpp:143
SerialWombatAbstractScaledOutput::writePID
int16_t writePID(uint16_t kp, uint16_t ki, uint16_t kd, uint16_t target, Period samplePeriod)
Configure the scaled output block into PID control mode.
Definition: SerialWombatAbstractScaledOutput.cpp:179
SerialWombatAbstractScaledOutput::PERIOD_2mS
@ PERIOD_2mS
Definition: SerialWombatAbstractScaledOutput.h:71