accelstepper 获取方向_accelstepper.h

// AccelStepper.h

//

/// \mainpage AccelStepper library for Arduino

///

/// This is the Arduino AccelStepper library.

/// It provides an object-oriented interface for 2, 3 or 4 pin stepper motors.

///

/// The standard Arduino IDE includes the Stepper library

/// (http://arduino.cc/en/Reference/Stepper) for stepper motors. It is

/// perfectly adequate for simple, single motor applications.

///

/// AccelStepper significantly improves on the standard Arduino Stepper library in several ways:

/// \li Supports acceleration and deceleration

/// \li Supports multiple simultaneous steppers, with independent concurrent stepping on each stepper

/// \li API functions never delay() or block

/// \li Supports 2, 3 and 4 wire steppers, plus 3 and 4 wire half steppers.

/// \li Supports alternate stepping functions to enable support of AFMotor (https://github.com/adafruit/Adafruit-Motor-Shield-library)

/// \li Supports stepper drivers such as the Sparkfun EasyDriver (based on 3967 driver chip)

/// \li Very slow speeds are supported

/// \li Extensive API

/// \li Subclass support

///

/// The latest version of this documentation can be downloaded from

/// http://www.airspayce.com/mikem/arduino/AccelStepper

/// The version of the package that this documentation refers to can be downloaded

/// from http://www.airspayce.com/mikem/arduino/AccelStepper/AccelStepper-1.37.zip

///

/// Example Arduino programs are included to show the main modes of use.

///

/// You can also find online help and discussion at http://groups.google.com/group/accelstepper

/// Please use that group for all questions and discussions on this topic.

/// Do not contact the author directly, unless it is to discuss commercial licensing.

///

/// Tested on Arduino Diecimila and Mega with arduino-0018 & arduino-0021

/// on OpenSuSE 11.1 and avr-libc-1.6.1-1.15,

/// cross-avr-binutils-2.19-9.1, cross-avr-gcc-4.1.3_20080612-26.5.

///

/// \par Installation

/// Install in the usual way: unzip the distribution zip file to the libraries

/// sub-folder of your sketchbook.

///

/// This software is Copyright (C) 2010 Mike McCauley. Use is subject to license

/// conditions. The main licensing options available are GPL V2 or Commercial:

///

/// \par Theory

/// This code uses speed calculations as described in

/// "Generate stepper-motor speed profiles in real time" by David Austin

/// http://fab.cba.mit.edu/classes/MIT/961.09/projects/i0/Stepper_Motor_Speed_Profile.pdf

/// with the exception that AccelStepper uses steps per second rather than radians per second

/// (because we dont know the step angle of the motor)

/// An initial step interval is calculated for the first step, based on the desired acceleration

/// Subsequent shorter step intervals are calculated based

/// on the previous step until max speed is acheived.

///

/// \par Open Source Licensing GPL V2

/// This is the appropriate option if you want to share the source code of your

/// application with everyone you distribute it to, and you also want to give them

/// the right to share who uses it. If you wish to use this software under Open

/// Source Licensing, you must contribute all your source code to the open source

/// community in accordance with the GPL Version 2 when your application is

/// distributed. See http://www.gnu.org/copyleft/gpl.html

///

/// \par Commercial Licensing

/// This is the appropriate option if you are creating proprietary applications

/// and you are not prepared to distribute and share the source code of your

/// application. Contact info@airspayce.com for details.

///

/// \par Revision History

/// \version 1.0 Initial release

///

/// \version 1.1 Added speed() function to get the current speed.

/// \version 1.2 Added runSpeedToPosition() submitted by Gunnar Arndt.

/// \version 1.3 Added support for stepper drivers (ie with Step and Direction inputs) with _pins == 1

/// \version 1.4 Added functional contructor to support AFMotor, contributed by Limor, with example sketches.

/// \version 1.5 Improvements contributed by Peter Mousley: Use of microsecond steps and other speed improvements

/// to increase max stepping speed to about 4kHz. New option for user to set the min allowed pulse width.

/// Added checks for already running at max speed and skip further calcs if so.

/// \version 1.6 Fixed a problem with wrapping of microsecond stepping that could cause stepping to hang.

/// Reported by Sandy Noble.

/// Removed redundant _lastRunTime member.

/// \version 1.7 Fixed a bug where setCurrentPosition() did not always work as expected.

/// Reported by Peter Linhart.

/// \version 1.8 Added support for 4 pin half-steppers, requested by Harvey Moon

/// \version 1.9 setCurrentPosition() now also sets motor speed to 0.

/// \version 1.10 Builds on Arduino 1.0

/// \version 1.11 Improvments from Michael Ellison:

/// Added optional enable line support for stepper drivers

/// Added inversion for step/direction/enable lines for stepper drivers

/// \version 1.12 Announce Google Group

/// \version 1.13 Improvements to speed calculation. Cost of calculation is now less in the worst case,

/// and more or less constant in all cases. This should result in slightly beter high speed performance, and

/// reduce anomalous speed glitches when other steppers are accelerating.

/// However, its hard to see how to replace the sqrt() required at the very first step from 0 speed.

/// \version 1.14 Fixed a problem with compiling under arduino 0021 reported by EmbeddedMan

/// \version 1.15 Fixed a problem with runSpeedToPosition which did not correctly handle

/// running backwards to a smaller target position. Added examples

/// \version 1.16 Fixed some cases in the code where abs() was used instead of fabs().

/// \version 1.17 Added example ProportionalControl

/// \version 1.18 Fixed a problem: If one calls the funcion runSpeed() when Speed is zero, it makes steps

/// without counting. reported by Friedrich, Klappenbach.

/// \version 1.19 Added MotorInterfaceType and symbolic names for the number of pins to use

/// for the motor interface. Updated examples to suit.

/// Replaced individual pin assignment variables _pin1, _pin2 etc with array _pin[4].

/// _pins member changed to _interface.

/// Added _pinInverted array to simplify pin inversion operations.

/// Added new function setOutputPins() which sets the motor output pins.

/// It can be overridden in order to provide, say, serial output instead of parallel output

/// Some refactoring and code size reduction.

/// \version 1.20 Improved documentation and examples to show need for correctly

/// specifying AccelStepper::FULL4WIRE and friends.

/// \version 1.21 Fixed a problem where desiredSpeed could compute the wrong step acceleration

/// when _speed was small but non-zero. Reported by Brian Schmalz.

/// Precompute sqrt_twoa to improve performance and max possible stepping speed

/// \version 1.22 Added Bounce.pde example

/// Fixed a problem where calling moveTo(), setMaxSpeed(), setAcceleration() more

/// frequently than the step time, even

/// with the same values, would interfere with speed calcs. Now a new speed is computed

/// only if there was a change in the set value. Reported by Brian Schmalz.

/// \version 1.23 Rewrite of the speed algorithms in line with

/// http://fab.cba.mit.edu/classes/MIT/961.09/projects/i0/Stepper_Motor_Speed_Profile.pdf

/// Now expect smoother and more linear accelerations and decelerations. The desiredSpeed()

/// function was removed.

/// \version 1.24 Fixed a problem introduced in 1.23: with runToPosition, which did never returned

/// \version 1.25 Now ignore attempts to set acceleration to 0.0

/// \version 1.26 Fixed a problem where certina combinations of speed and accelration could cause

/// oscillation about the target position.

/// \version 1.27 Added stop() function to stop as fast as possible with current acceleration parameters.

/// Also added new Quickstop example showing its use.

/// \version 1.28 Fixed another problem where certain combinations of speed and accelration could cause

/// oscillation about the target position.

/// Added support for 3 wire full and half steppers such as Hard Disk Drive spindle.

/// Contributed by Yuri Ivatchkovitch.

/// \version 1.29 Fixed a problem that could cause a DRIVER stepper to continually step

/// with some sketches. Reported by Vadim.

/// \version 1.30 Fixed a problem that could cause stepper to back up a few steps at the end of

/// accelerated travel with certain speeds. Reported and patched by jolo.

/// \version 1.31 Updated author and distribution location details to airspayce.com

/// \version 1.32 Fixed a problem with enableOutputs() and setEnablePin on Arduino Due that

/// prevented the enable pin changing stae correctly. Reported by Duane Bishop.

/// \version 1.33 Fixed an error in example AFMotor_ConstantSpeed.pde did not setMaxSpeed();

/// Fixed a problem that caused incorrect pin sequencing of FULL3WIRE and HALF3WIRE.

/// Unfortunately this meant changing the signature for all step*() functions.

/// Added example MotorShield, showing how to use AdaFruit Motor Shield to control

/// a 3 phase motor such as a HDD spindle motor (and without using the AFMotor library.

/// \version 1.34 Added setPinsInverted(bool pin1Invert, bool pin2Invert, bool pin3Invert, bool pin4Invert, bool enableInvert)

/// to allow inversion of 2, 3 and 4 wire stepper pins. Requested by Oleg.

/// \version 1.35 Removed default args from setPinsInverted(bool, bool, bool, bool, bool) to prevent ambiguity with

/// setPinsInverted(bool, bool, bool). Reported by Mac Mac.

/// \version 1.36 Changed enableOutputs() and disableOutputs() to be virtual so can be overridden.

/// Added new op

...

...

(文件超长,未完全显示,请下载后阅读剩余部分)

...

展开> <收缩

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值