arduino stuffs
Diffstat (limited to 'libraries/Stepper/src/Stepper.h')
-rw-r--r--libraries/Stepper/src/Stepper.h121
1 files changed, 121 insertions, 0 deletions
diff --git a/libraries/Stepper/src/Stepper.h b/libraries/Stepper/src/Stepper.h
new file mode 100644
index 0000000..2e68979
--- /dev/null
+++ b/libraries/Stepper/src/Stepper.h
@@ -0,0 +1,121 @@
+/*
+ * Stepper.h - Stepper library for Wiring/Arduino - Version 1.1.0
+ *
+ * Original library (0.1) by Tom Igoe.
+ * Two-wire modifications (0.2) by Sebastian Gassner
+ * Combination version (0.3) by Tom Igoe and David Mellis
+ * Bug fix for four-wire (0.4) by Tom Igoe, bug fix from Noah Shibley
+ * High-speed stepping mod by Eugene Kozlenko
+ * Timer rollover fix by Eugene Kozlenko
+ * Five phase five wire (1.1.0) by Ryan Orendorff
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ *
+ * Drives a unipolar, bipolar, or five phase stepper motor.
+ *
+ * When wiring multiple stepper motors to a microcontroller, you quickly run
+ * out of output pins, with each motor requiring 4 connections.
+ *
+ * By making use of the fact that at any time two of the four motor coils are
+ * the inverse of the other two, the number of control connections can be
+ * reduced from 4 to 2 for the unipolar and bipolar motors.
+ *
+ * A slightly modified circuit around a Darlington transistor array or an
+ * L293 H-bridge connects to only 2 microcontroler pins, inverts the signals
+ * received, and delivers the 4 (2 plus 2 inverted ones) output signals
+ * required for driving a stepper motor. Similarly the Arduino motor shields
+ * 2 direction pins may be used.
+ *
+ * The sequence of control signals for 5 phase, 5 control wires is as follows:
+ *
+ * Step C0 C1 C2 C3 C4
+ * 1 0 1 1 0 1
+ * 2 0 1 0 0 1
+ * 3 0 1 0 1 1
+ * 4 0 1 0 1 0
+ * 5 1 1 0 1 0
+ * 6 1 0 0 1 0
+ * 7 1 0 1 1 0
+ * 8 1 0 1 0 0
+ * 9 1 0 1 0 1
+ * 10 0 0 1 0 1
+ *
+ * The sequence of control signals for 4 control wires is as follows:
+ *
+ * Step C0 C1 C2 C3
+ * 1 1 0 1 0
+ * 2 0 1 1 0
+ * 3 0 1 0 1
+ * 4 1 0 0 1
+ *
+ * The sequence of controls signals for 2 control wires is as follows
+ * (columns C1 and C2 from above):
+ *
+ * Step C0 C1
+ * 1 0 1
+ * 2 1 1
+ * 3 1 0
+ * 4 0 0
+ *
+ * The circuits can be found at
+ *
+ * http://www.arduino.cc/en/Tutorial/Stepper
+ */
+
+// ensure this library description is only included once
+#ifndef Stepper_h
+#define Stepper_h
+
+// library interface description
+class Stepper {
+ public:
+ // constructors:
+ Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2);
+ Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2,
+ int motor_pin_3, int motor_pin_4);
+ Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2,
+ int motor_pin_3, int motor_pin_4,
+ int motor_pin_5);
+
+ // speed setter method:
+ void setSpeed(long whatSpeed);
+
+ // mover method:
+ void step(int number_of_steps);
+
+ int version(void);
+
+ private:
+ void stepMotor(int this_step);
+
+ int direction; // Direction of rotation
+ unsigned long step_delay; // delay between steps, in ms, based on speed
+ int number_of_steps; // total number of steps this motor can take
+ int pin_count; // how many pins are in use.
+ int step_number; // which step the motor is on
+
+ // motor pin numbers:
+ int motor_pin_1;
+ int motor_pin_2;
+ int motor_pin_3;
+ int motor_pin_4;
+ int motor_pin_5; // Only 5 phase motor
+
+ unsigned long last_step_time; // time stamp in us of when the last step was taken
+};
+
+#endif
+