|
LCC Fusion Project 1.0
LCC Automation
|
#include <AccelStepper.h>
Inherited by MCP3017AccelStepper.
Public Types | |
| enum | MotorInterfaceType { FUNCTION = 0 , DRIVER = 1 , FULL2WIRE = 2 , FULL3WIRE = 3 , FULL4WIRE = 4 , HALF3WIRE = 6 , HALF4WIRE = 8 } |
Public Member Functions | |
| AccelStepper (uint8_t interface=AccelStepper::FULL4WIRE, uint8_t pin1=2, uint8_t pin2=3, uint8_t pin3=4, uint8_t pin4=5, bool enable=true) | |
| AccelStepper (void(*forward)(), void(*backward)()) | |
| void | moveTo (long absolute) |
| void | move (long relative) |
| boolean | run () |
| boolean | runSpeed () |
| void | setMaxSpeed (float speed) |
| float | maxSpeed () |
| void | setAcceleration (float acceleration) |
| void | setSpeed (float speed) |
| float | speed () |
| long | distanceToGo () |
| long | targetPosition () |
| long | currentPosition () |
| void | setCurrentPosition (long position) |
| void | runToPosition () |
| boolean | runSpeedToPosition () |
| void | runToNewPosition (long position) |
| void | stop () |
| virtual void | disableOutputs () |
| virtual void | enableOutputs () |
| void | setMinPulseWidth (unsigned int minWidth) |
| void | setEnablePin (uint8_t enablePin=0xff) |
| void | setPinsInverted (bool directionInvert=false, bool stepInvert=false, bool enableInvert=false) |
| void | setPinsInverted (bool pin1Invert, bool pin2Invert, bool pin3Invert, bool pin4Invert, bool enableInvert) |
| bool | isRunning () |
Protected Types | |
| enum | Direction { DIRECTION_CCW = 0 , DIRECTION_CW = 1 } |
Protected Member Functions | |
| void | computeNewSpeed () |
| virtual void | setOutputPins (uint8_t mask) |
| virtual void | step (long step) |
| virtual void | step0 (long step) |
| virtual void | step1 (long step) |
| virtual void | step2 (long step) |
| virtual void | step3 (long step) |
| virtual void | step4 (long step) |
| virtual void | step6 (long step) |
| virtual void | step8 (long step) |
Protected Attributes | |
| boolean | _direction |
| uint8_t | _interface |
| uint8_t | _pin [4] |
| uint8_t | _pinInverted [4] |
| Whether the _pins is inverted or not. | |
| long | _currentPos |
| The current absolution position in steps. | |
| long | _targetPos |
| float | _speed |
| float | _maxSpeed |
| The maximum permitted speed in steps per second. Must be > 0. | |
| float | _acceleration |
| unsigned long | _stepInterval |
| unsigned long | _lastStepTime |
| The last step time in microseconds. | |
| unsigned int | _minPulseWidth |
| The minimum allowed pulse width in microseconds. | |
| bool | _enableInverted |
| Is the enable pin inverted? More... | |
| uint8_t | _enablePin |
| Enable pin for stepper driver, or 0xFF if unused. | |
| void(* | _forward )() |
| The pointer to a forward-step procedure. | |
| void(* | _backward )() |
| The pointer to a backward-step procedure. | |
| long | _n |
| The step counter for speed calculations. | |
| float | _c0 |
| Initial step size in microseconds. | |
| float | _cn |
| Last step size in microseconds. | |
| float | _cmin |
| Min step size in microseconds based on maxSpeed. | |
Support for stepper motors with acceleration etc.
This defines a single 2 or 4 pin stepper motor, or stepper moter with fdriver chip, with optional acceleration, deceleration, absolute positioning commands etc. Multiple simultaneous steppers are supported, all moving at different speeds and accelerations.
Gregor Christandl reports that with an Arduino Due and a simple test program, he measured 43163 steps per second using runSpeed(), and 16214 steps per second using run();
Definition at line 325 of file AccelStepper.h.
|
protected |
Direction indicator Symbolic names for the direction the motor is turning
| Enumerator | |
|---|---|
| DIRECTION_CCW | Counter-Clockwise. |
| DIRECTION_CW | Clockwise. |
Definition at line 541 of file AccelStepper.h.
Symbolic names for number of pins. Use this in the pins argument the AccelStepper constructor to provide a symbolic name for the number of pins to use.
Definition at line 332 of file AccelStepper.h.
| AccelStepper::AccelStepper | ( | uint8_t | interface = AccelStepper::FULL4WIRE, |
| uint8_t | pin1 = 2, |
||
| uint8_t | pin2 = 3, |
||
| uint8_t | pin3 = 4, |
||
| uint8_t | pin4 = 5, |
||
| bool | enable = true |
||
| ) |
Constructor. You can have multiple simultaneous steppers, all moving at different speeds and accelerations, provided you call their run() functions at frequent enough intervals. Current Position is set to 0, target position is set to 0. MaxSpeed and Acceleration default to 1.0. The motor pins will be initialised to OUTPUT mode during the constructor by a call to enableOutputs().
| [in] | interface | Number of pins to interface to. Integer values are supported, but it is preferred to use the MotorInterfaceType symbolic names. AccelStepper::DRIVER (1) means a stepper driver (with Step and Direction pins). If an enable line is also needed, call setEnablePin() after construction. You may also invert the pins using setPinsInverted(). Caution: DRIVER implements a blocking delay of minPulseWidth microseconds (default 1us) for each step. You can change this with setMinPulseWidth(). AccelStepper::FULL2WIRE (2) means a 2 wire stepper (2 pins required). AccelStepper::FULL3WIRE (3) means a 3 wire stepper, such as HDD spindle (3 pins required). AccelStepper::FULL4WIRE (4) means a 4 wire stepper (4 pins required). AccelStepper::HALF3WIRE (6) means a 3 wire half stepper, such as HDD spindle (3 pins required) AccelStepper::HALF4WIRE (8) means a 4 wire half stepper (4 pins required) Defaults to AccelStepper::FULL4WIRE (4) pins. |
| [in] | pin1 | Arduino digital pin number for motor pin 1. Defaults to pin 2. For a AccelStepper::DRIVER (interface==1), this is the Step input to the driver. Low to high transition means to step) |
| [in] | pin2 | Arduino digital pin number for motor pin 2. Defaults to pin 3. For a AccelStepper::DRIVER (interface==1), this is the Direction input the driver. High means forward. |
| [in] | pin3 | Arduino digital pin number for motor pin 3. Defaults to pin 4. |
| [in] | pin4 | Arduino digital pin number for motor pin 4. Defaults to pin 5. |
| [in] | enable | If this is true (the default), enableOutputs() will be called to enable the output pins at construction time. |
Definition at line 190 of file AccelStepper.cpp.

| AccelStepper::AccelStepper | ( | void(*)() | forward, |
| void(*)() | backward | ||
| ) |
Alternate Constructor which will call your own functions for forward and backward steps. You can have multiple simultaneous steppers, all moving at different speeds and accelerations, provided you call their run() functions at frequent enough intervals. Current Position is set to 0, target position is set to 0. MaxSpeed and Acceleration default to 1.0. Any motor initialization should happen before hand, no pins are used or initialized.
| [in] | forward | void-returning procedure that will make a forward step |
| [in] | backward | void-returning procedure that will make a backward step |
Definition at line 225 of file AccelStepper.cpp.

|
protected |
Forces the library to compute a new instantaneous speed and set that as the current speed. It is called by the library:
Definition at line 97 of file AccelStepper.cpp.


| long AccelStepper::currentPosition | ( | ) |
The current motor position.
Definition at line 82 of file AccelStepper.cpp.
|
virtual |
Disable motor pin outputs by setting them all LOW Depending on the design of your electronics this may turn off the power to the motor coils, saving power. This is useful to support Arduino low power modes: disable the outputs during sleep and then reenable with enableOutputs() before stepping again. If the enable Pin is defined, sets it to OUTPUT mode and clears the pin to disabled.
Definition at line 543 of file AccelStepper.cpp.

| long AccelStepper::distanceToGo | ( | ) |
The distance from the current position to the target position.
Definition at line 72 of file AccelStepper.cpp.

|
virtual |
Enable motor pin outputs by setting the motor pins to OUTPUT mode. Called automatically by the constructor. If the enable Pin is defined, sets it to OUTPUT mode and sets the pin to enabled.
Definition at line 555 of file AccelStepper.cpp.

| bool AccelStepper::isRunning | ( | ) |
Checks to see if the motor is currently running to a target
Definition at line 649 of file AccelStepper.cpp.
| float AccelStepper::maxSpeed | ( | ) |
Returns the maximum speed configured for this stepper that was previously set by setMaxSpeed();
Definition at line 276 of file AccelStepper.cpp.
| void AccelStepper::move | ( | long | relative | ) |
Set the target position relative to the current position.
| [in] | relative | The desired position relative to the current position. Negative is anticlockwise from the current position. |
Definition at line 33 of file AccelStepper.cpp.


| void AccelStepper::moveTo | ( | long | absolute | ) |
Set the target position. The run() function will try to move the motor (at most one step per call) from the current position to the target position set by the most recent call to this function. Caution: moveTo() also recalculates the speed for the next step. If you are trying to use constant speed movements, you should call setSpeed() after calling moveTo().
| [in] | absolute | The desired absolute position. Negative is anticlockwise from the 0 position. |
Definition at line 23 of file AccelStepper.cpp.


| boolean AccelStepper::run | ( | ) |
Poll the motor and step it if a step is due, implementing accelerations and decelerations to achieve the target position. You must call this as frequently as possible, but at least once per minimum step time interval, preferably in your main loop. Note that each call to run() will make at most one step, and then only when a step is due, based on the current speed and the time since the last step.
Definition at line 183 of file AccelStepper.cpp.


| boolean AccelStepper::runSpeed | ( | ) |
Poll the motor and step it if a step is due, implementing a constant speed as set by the most recent call to setSpeed(). You must call this as frequently as possible, but at least once per step interval,
Definition at line 41 of file AccelStepper.cpp.


| boolean AccelStepper::runSpeedToPosition | ( | ) |
Runs at the currently selected speed until the target position is reached. Does not implement accelerations.
Definition at line 619 of file AccelStepper.cpp.

| void AccelStepper::runToNewPosition | ( | long | position | ) |
Moves the motor (with acceleration/deceleration) to the new target position and blocks until it is at position. Dont use this in event loops, since it blocks.
| [in] | position | The new target position. |
Definition at line 631 of file AccelStepper.cpp.

| void AccelStepper::runToPosition | ( | ) |
Moves the motor (with acceleration/deceleration) to the target position and blocks until it is at position. Dont use this in event loops, since it blocks.
Definition at line 613 of file AccelStepper.cpp.


| void AccelStepper::setAcceleration | ( | float | acceleration | ) |
Sets the acceleration/deceleration rate.
| [in] | acceleration | The desired acceleration in steps per second per second. Must be > 0.0. This is an expensive call since it requires a square root to be calculated. Dont call more ofthen than needed |
Definition at line 281 of file AccelStepper.cpp.


| void AccelStepper::setCurrentPosition | ( | long | position | ) |
Resets the current position of the motor, so that wherever the motor happens to be right now is considered to be the new 0 position. Useful for setting a zero position on a stepper after an initial hardware positioning move. Has the side effect of setting the current motor speed to 0.
| [in] | position | The position in steps of wherever the motor happens to be right now. |
Definition at line 89 of file AccelStepper.cpp.
| void AccelStepper::setEnablePin | ( | uint8_t | enablePin = 0xff | ) |
Sets the enable pin number for stepper drivers. 0xFF indicates unused (default). Otherwise, if a pin is set, the pin will be turned on when enableOutputs() is called and switched off when disableOutputs() is called.
| [in] | enablePin | Arduino digital pin number for motor enable |
Definition at line 584 of file AccelStepper.cpp.
| void AccelStepper::setMaxSpeed | ( | float | speed | ) |
Sets the maximum permitted speed. The run() function will accelerate up to the speed set by this function. Caution: the maximum speed achievable depends on your processor and clock speed. The default maxSpeed is 1.0 steps per second.
| [in] | speed | The desired maximum speed in steps per second. Must be > 0. Caution: Speeds that exceed the maximum speed supported by the processor may Result in non-linear accelerations and decelerations. |
Definition at line 259 of file AccelStepper.cpp.

| void AccelStepper::setMinPulseWidth | ( | unsigned int | minWidth | ) |
Sets the minimum pulse width allowed by the stepper driver. The minimum practical pulse width is approximately 20 microseconds. Times less than 20 microseconds will usually result in 20 microseconds or so.
| [in] | minWidth | The minimum pulse width in microseconds. |
Definition at line 579 of file AccelStepper.cpp.
|
protectedvirtual |
Low level function to set the motor output pins bit 0 of the mask corresponds to _pin[0] bit 1 of the mask corresponds to _pin[1] You can override this to impment, for example serial chip output insted of using the output pins directly
Definition at line 357 of file AccelStepper.cpp.

| void AccelStepper::setPinsInverted | ( | bool | directionInvert = false, |
| bool | stepInvert = false, |
||
| bool | enableInvert = false |
||
| ) |
Sets the inversion for stepper driver pins
| [in] | directionInvert | True for inverted direction pin, false for non-inverted |
| [in] | stepInvert | True for inverted step pin, false for non-inverted |
| [in] | enableInvert | True for inverted enable pin, false (default) for non-inverted |
Definition at line 596 of file AccelStepper.cpp.
| void AccelStepper::setPinsInverted | ( | bool | pin1Invert, |
| bool | pin2Invert, | ||
| bool | pin3Invert, | ||
| bool | pin4Invert, | ||
| bool | enableInvert | ||
| ) |
Sets the inversion for 2, 3 and 4 wire stepper pins
| [in] | pin1Invert | True for inverted pin1, false for non-inverted |
| [in] | pin2Invert | True for inverted pin2, false for non-inverted |
| [in] | pin3Invert | True for inverted pin3, false for non-inverted |
| [in] | pin4Invert | True for inverted pin4, false for non-inverted |
| [in] | enableInvert | True for inverted enable pin, false (default) for non-inverted |
Definition at line 603 of file AccelStepper.cpp.
| void AccelStepper::setSpeed | ( | float | speed | ) |
Sets the desired constant speed for use with runSpeed().
| [in] | speed | The desired constant speed in steps per second. Positive is clockwise. Speeds of more than 1000 steps per second are unreliable. Very slow speeds may be set (eg 0.00027777 for once per hour, approximately. Speed accuracy depends on the Arduino crystal. Jitter depends on how frequently you call the runSpeed() function. The speed will be limited by the current value of setMaxSpeed() |
Definition at line 298 of file AccelStepper.cpp.

| float AccelStepper::speed | ( | ) |
The most recently set speed.
Definition at line 313 of file AccelStepper.cpp.

|
protectedvirtual |
Called to execute a step. Only called when a new step is required. Subclasses may override to implement new stepping interfaces. The default calls step1(), step2(), step4() or step8() depending on the number of pins defined for the stepper.
| [in] | step | The current step phase number (0 to 7) |
Definition at line 319 of file AccelStepper.cpp.


|
protectedvirtual |
Called to execute a step using stepper functions (pins = 0) Only called when a new step is required. Calls _forward() or _backward() to perform the step
| [in] | step | The current step phase number (0 to 7) |
Definition at line 370 of file AccelStepper.cpp.


|
protectedvirtual |
Called to execute a step on a stepper driver (ie where pins == 1). Only called when a new step is required. Subclasses may override to implement new stepping interfaces. The default sets or clears the outputs of Step pin1 to step, and sets the output of _pin2 to the desired direction. The Step pin (_pin1) is pulsed for 1 microsecond which is the minimum STEP pulse width for the 3967 driver.
| [in] | step | The current step phase number (0 to 7) |
Definition at line 382 of file AccelStepper.cpp.


|
protectedvirtual |
Called to execute a step on a 2 pin motor. Only called when a new step is required. Subclasses may override to implement new stepping interfaces. The default sets or clears the outputs of pin1 and pin2
| [in] | step | The current step phase number (0 to 7) |
Definition at line 399 of file AccelStepper.cpp.


|
protectedvirtual |
Called to execute a step on a 3 pin motor, such as HDD spindle. Only called when a new step is required. Subclasses may override to implement new stepping interfaces. The default sets or clears the outputs of pin1, pin2, pin3
| [in] | step | The current step phase number (0 to 7) |
Definition at line 423 of file AccelStepper.cpp.


|
protectedvirtual |
Called to execute a step on a 4 pin motor. Only called when a new step is required. Subclasses may override to implement new stepping interfaces. The default sets or clears the outputs of pin1, pin2, pin3, pin4.
| [in] | step | The current step phase number (0 to 7) |
Definition at line 445 of file AccelStepper.cpp.


|
protectedvirtual |
Called to execute a step on a 3 pin motor, such as HDD spindle. Only called when a new step is required. Subclasses may override to implement new stepping interfaces. The default sets or clears the outputs of pin1, pin2, pin3
| [in] | step | The current step phase number (0 to 7) |
Definition at line 470 of file AccelStepper.cpp.


|
protectedvirtual |
Called to execute a step on a 4 pin half-steper motor. Only called when a new step is required. Subclasses may override to implement new stepping interfaces. The default sets or clears the outputs of pin1, pin2, pin3, pin4.
| [in] | step | The current step phase number (0 to 7) |
Definition at line 504 of file AccelStepper.cpp.


| void AccelStepper::stop | ( | ) |
Sets a new target position that causes the stepper to stop as quickly as possible, using the current speed and acceleration parameters.
Definition at line 637 of file AccelStepper.cpp.

| long AccelStepper::targetPosition | ( | ) |
The most recently set target position.
Definition at line 77 of file AccelStepper.cpp.
|
protected |
The acceleration to use to accelerate or decelerate the motor in steps per second per second. Must be > 0
Definition at line 651 of file AccelStepper.h.
|
protected |
Current direction motor is spinning in Protected because some peoples subclasses need it to be so
Definition at line 620 of file AccelStepper.h.
|
protected |
Is the enable pin inverted?
Is the direction pin inverted? bool _dirInverted; /// Moved to _pinInverted[1] Is the step pin inverted? bool _stepInverted; /// Moved to _pinInverted[0]
Definition at line 671 of file AccelStepper.h.
|
protected |
Number of pins on the stepper motor. Permits 2 or 4. 2 pins is a bipolar, and 4 pins is a unipolar.
Definition at line 625 of file AccelStepper.h.
|
protected |
Arduino pin number assignments for the 2 or 4 pins required to interface to the stepper motor or driver
Definition at line 629 of file AccelStepper.h.
|
protected |
The current motos speed in steps per second Positive is clockwise
Definition at line 644 of file AccelStepper.h.
|
protected |
The current interval between steps in microseconds. 0 means the motor is currently stopped with _speed == 0
Definition at line 656 of file AccelStepper.h.
|
protected |
The target position in steps. The AccelStepper library will move the motor from the _currentPos to the _targetPos, taking into account the max speed, acceleration and deceleration
Definition at line 640 of file AccelStepper.h.