File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -88,9 +88,18 @@ void AutoPID::setIntegral(double integral) { _integral = integral; }
8888
8989void AutoPIDRelay::run () {
9090 AutoPID::run ();
91+ if (!_hasRun) {
92+ _lastPulseTime = millis ();
93+ _hasRun = true ;
94+ }
9195 while ((millis () - _lastPulseTime) > _pulseWidth)
9296 _lastPulseTime += _pulseWidth;
9397 *_relayState = ((millis () - _lastPulseTime) < (_pulseValue * _pulseWidth));
9498}
9599
96100double AutoPIDRelay::getPulseValue () { return (isStopped () ? 0 : _pulseValue); }
101+
102+ void AutoPIDRelay::reset () {
103+ AutoPID::reset ();
104+ _lastPulseTime = millis ();
105+ }
Original file line number Diff line number Diff line change @@ -26,7 +26,7 @@ class AutoPID {
2626 void run ();
2727 // Stops PID functionality, output sets to
2828 void stop ();
29- void reset ();
29+ virtual void reset ();
3030 bool isStopped ();
3131
3232 double getIntegral ();
@@ -56,9 +56,12 @@ class AutoPIDRelay : public AutoPID {
5656
5757 double getPulseValue ();
5858
59+ void reset () override ;
60+
5961 private:
6062 bool *_relayState;
61- unsigned long _pulseWidth, _lastPulseTime;
63+ unsigned long _pulseWidth;
64+ unsigned long _lastPulseTime;
6265 double _pulseValue;
6366}; // class AutoPIDRelay
6467
You can’t perform that action at this time.
0 commit comments