6 uint8_t step2default[4] =
14 uint8_t step4default[4] =
24 this->pSteps = step2default;
26 this->pSteps = pStep2;
43 this->pSteps = step4default;
45 this->pSteps = pStep4;
51 _targetPos = absolute;
65 moveTo(_currentPos + relative);
74 if (_targetPos == _currentPos)
77 unsigned long time = micros();
79 if ((time >= (_lastStepTime + _stepInterval))
80 || ((time < _lastRunTime) && (time >(0xFFFFFFFF - (_lastStepTime + _stepInterval)))))
94 if (this->_pin3 == 255)
95 step2(_currentPos & 0x3);
97 step4(_currentPos & 0x3);
100 _lastStepTime = time;
110 return _targetPos - _currentPos;
126 _currentPos = position;
132 _stepInterval = (
unsigned long) fabs(1000000.0 / _speed);
145 if ((this->pSteps[step] & B10) > 0)
146 digitalWrite(_pin1, HIGH);
148 digitalWrite(_pin1, LOW);
150 if ((this->pSteps[step] & B01) > 0)
151 digitalWrite(_pin2, HIGH);
153 digitalWrite(_pin2, LOW);
161 if ((this->pSteps[step] & B1000) > 0)
162 digitalWrite(_pin1, HIGH);
164 digitalWrite(_pin2, LOW);
165 if ((this->pSteps[step] & B0100) > 0)
166 digitalWrite(_pin2, HIGH);
168 digitalWrite(_pin3, LOW);
169 if ((this->pSteps[step] & B0010) > 0)
170 digitalWrite(_pin3, HIGH);
172 digitalWrite(_pin4, LOW);
173 if ((this->pSteps[step] & B0001) > 0)
174 digitalWrite(_pin4, HIGH);
176 digitalWrite(_pin1, LOW);
183 digitalWrite(_pin1, LOW);
184 digitalWrite(_pin2, LOW);
186 digitalWrite(_pin3, LOW);
188 digitalWrite(_pin4, LOW);
193 pinMode(_pin1, OUTPUT);
194 pinMode(_pin2, OUTPUT);
196 pinMode(_pin3, OUTPUT);
198 pinMode(_pin4, OUTPUT);
203 _minPulseWidth = minWidth;
void setCurrentPosition(long position)
void setMinPulseWidth(unsigned int minWidth)
void setSpeed(float speed)
void moveTo(long absolute)
Support for stepper motors with acceleration etc.
LocoStepper(uint8_t pin1, uint8_t pin2, uint8_t *inpStep2 = NULL)