arduino-0018-linux-x64
This commit is contained in:
		
							parent
							
								
									8e4748e499
								
							
						
					
					
						commit
						ed785c5798
					
				
					 426 changed files with 76732 additions and 0 deletions
				
			
		
							
								
								
									
										220
									
								
								arduino-0018-linux-x64/libraries/Stepper/Stepper.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								arduino-0018-linux-x64/libraries/Stepper/Stepper.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,220 @@
 | 
			
		|||
/*
 | 
			
		||||
  Stepper.cpp - - Stepper library for Wiring/Arduino - Version 0.4
 | 
			
		||||
  
 | 
			
		||||
  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  
 | 
			
		||||
 | 
			
		||||
  Drives a unipolar or bipolar stepper motor using  2 wires or 4 wires
 | 
			
		||||
 | 
			
		||||
  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. 
 | 
			
		||||
 | 
			
		||||
  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.
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "WProgram.h"
 | 
			
		||||
#include "Stepper.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * two-wire constructor.
 | 
			
		||||
 * Sets which wires should control the motor.
 | 
			
		||||
 */
 | 
			
		||||
Stepper::Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2)
 | 
			
		||||
{
 | 
			
		||||
  this->step_number = 0;      // which step the motor is on
 | 
			
		||||
  this->speed = 0;        // the motor speed, in revolutions per minute
 | 
			
		||||
  this->direction = 0;      // motor direction
 | 
			
		||||
  this->last_step_time = 0;    // time stamp in ms of the last step taken
 | 
			
		||||
  this->number_of_steps = number_of_steps;    // total number of steps for this motor
 | 
			
		||||
  
 | 
			
		||||
  // Arduino pins for the motor control connection:
 | 
			
		||||
  this->motor_pin_1 = motor_pin_1;
 | 
			
		||||
  this->motor_pin_2 = motor_pin_2;
 | 
			
		||||
 | 
			
		||||
  // setup the pins on the microcontroller:
 | 
			
		||||
  pinMode(this->motor_pin_1, OUTPUT);
 | 
			
		||||
  pinMode(this->motor_pin_2, OUTPUT);
 | 
			
		||||
  
 | 
			
		||||
  // When there are only 2 pins, set the other two to 0:
 | 
			
		||||
  this->motor_pin_3 = 0;
 | 
			
		||||
  this->motor_pin_4 = 0;
 | 
			
		||||
  
 | 
			
		||||
  // pin_count is used by the stepMotor() method:
 | 
			
		||||
  this->pin_count = 2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *   constructor for four-pin version
 | 
			
		||||
 *   Sets which wires should control the motor.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
Stepper::Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4)
 | 
			
		||||
{
 | 
			
		||||
  this->step_number = 0;      // which step the motor is on
 | 
			
		||||
  this->speed = 0;        // the motor speed, in revolutions per minute
 | 
			
		||||
  this->direction = 0;      // motor direction
 | 
			
		||||
  this->last_step_time = 0;    // time stamp in ms of the last step taken
 | 
			
		||||
  this->number_of_steps = number_of_steps;    // total number of steps for this motor
 | 
			
		||||
  
 | 
			
		||||
  // Arduino pins for the motor control connection:
 | 
			
		||||
  this->motor_pin_1 = motor_pin_1;
 | 
			
		||||
  this->motor_pin_2 = motor_pin_2;
 | 
			
		||||
  this->motor_pin_3 = motor_pin_3;
 | 
			
		||||
  this->motor_pin_4 = motor_pin_4;
 | 
			
		||||
 | 
			
		||||
  // setup the pins on the microcontroller:
 | 
			
		||||
  pinMode(this->motor_pin_1, OUTPUT);
 | 
			
		||||
  pinMode(this->motor_pin_2, OUTPUT);
 | 
			
		||||
  pinMode(this->motor_pin_3, OUTPUT);
 | 
			
		||||
  pinMode(this->motor_pin_4, OUTPUT);
 | 
			
		||||
 | 
			
		||||
  // pin_count is used by the stepMotor() method:  
 | 
			
		||||
  this->pin_count = 4;  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  Sets the speed in revs per minute
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
void Stepper::setSpeed(long whatSpeed)
 | 
			
		||||
{
 | 
			
		||||
  this->step_delay = 60L * 1000L / this->number_of_steps / whatSpeed;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  Moves the motor steps_to_move steps.  If the number is negative, 
 | 
			
		||||
   the motor moves in the reverse direction.
 | 
			
		||||
 */
 | 
			
		||||
void Stepper::step(int steps_to_move)
 | 
			
		||||
{  
 | 
			
		||||
  int steps_left = abs(steps_to_move);  // how many steps to take
 | 
			
		||||
  
 | 
			
		||||
  // determine direction based on whether steps_to_mode is + or -:
 | 
			
		||||
  if (steps_to_move > 0) {this->direction = 1;}
 | 
			
		||||
  if (steps_to_move < 0) {this->direction = 0;}
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
  // decrement the number of steps, moving one step each time:
 | 
			
		||||
  while(steps_left > 0) {
 | 
			
		||||
  // move only if the appropriate delay has passed:
 | 
			
		||||
  if (millis() - this->last_step_time >= this->step_delay) {
 | 
			
		||||
      // get the timeStamp of when you stepped:
 | 
			
		||||
      this->last_step_time = millis();
 | 
			
		||||
      // increment or decrement the step number,
 | 
			
		||||
      // depending on direction:
 | 
			
		||||
      if (this->direction == 1) {
 | 
			
		||||
        this->step_number++;
 | 
			
		||||
        if (this->step_number == this->number_of_steps) {
 | 
			
		||||
          this->step_number = 0;
 | 
			
		||||
        }
 | 
			
		||||
      } 
 | 
			
		||||
      else { 
 | 
			
		||||
        if (this->step_number == 0) {
 | 
			
		||||
          this->step_number = this->number_of_steps;
 | 
			
		||||
        }
 | 
			
		||||
        this->step_number--;
 | 
			
		||||
      }
 | 
			
		||||
      // decrement the steps left:
 | 
			
		||||
      steps_left--;
 | 
			
		||||
      // step the motor to step number 0, 1, 2, or 3:
 | 
			
		||||
      stepMotor(this->step_number % 4);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Moves the motor forward or backwards.
 | 
			
		||||
 */
 | 
			
		||||
void Stepper::stepMotor(int thisStep)
 | 
			
		||||
{
 | 
			
		||||
  if (this->pin_count == 2) {
 | 
			
		||||
    switch (thisStep) {
 | 
			
		||||
      case 0: /* 01 */
 | 
			
		||||
      digitalWrite(motor_pin_1, LOW);
 | 
			
		||||
      digitalWrite(motor_pin_2, HIGH);
 | 
			
		||||
      break;
 | 
			
		||||
      case 1: /* 11 */
 | 
			
		||||
      digitalWrite(motor_pin_1, HIGH);
 | 
			
		||||
      digitalWrite(motor_pin_2, HIGH);
 | 
			
		||||
      break;
 | 
			
		||||
      case 2: /* 10 */
 | 
			
		||||
      digitalWrite(motor_pin_1, HIGH);
 | 
			
		||||
      digitalWrite(motor_pin_2, LOW);
 | 
			
		||||
      break;
 | 
			
		||||
      case 3: /* 00 */
 | 
			
		||||
      digitalWrite(motor_pin_1, LOW);
 | 
			
		||||
      digitalWrite(motor_pin_2, LOW);
 | 
			
		||||
      break;
 | 
			
		||||
    } 
 | 
			
		||||
  }
 | 
			
		||||
  if (this->pin_count == 4) {
 | 
			
		||||
    switch (thisStep) {
 | 
			
		||||
      case 0:    // 1010
 | 
			
		||||
      digitalWrite(motor_pin_1, HIGH);
 | 
			
		||||
      digitalWrite(motor_pin_2, LOW);
 | 
			
		||||
      digitalWrite(motor_pin_3, HIGH);
 | 
			
		||||
      digitalWrite(motor_pin_4, LOW);
 | 
			
		||||
      break;
 | 
			
		||||
      case 1:    // 0110
 | 
			
		||||
      digitalWrite(motor_pin_1, LOW);
 | 
			
		||||
      digitalWrite(motor_pin_2, HIGH);
 | 
			
		||||
      digitalWrite(motor_pin_3, HIGH);
 | 
			
		||||
      digitalWrite(motor_pin_4, LOW);
 | 
			
		||||
      break;
 | 
			
		||||
      case 2:    //0101
 | 
			
		||||
      digitalWrite(motor_pin_1, LOW);
 | 
			
		||||
      digitalWrite(motor_pin_2, HIGH);
 | 
			
		||||
      digitalWrite(motor_pin_3, LOW);
 | 
			
		||||
      digitalWrite(motor_pin_4, HIGH);
 | 
			
		||||
      break;
 | 
			
		||||
      case 3:    //1001
 | 
			
		||||
      digitalWrite(motor_pin_1, HIGH);
 | 
			
		||||
      digitalWrite(motor_pin_2, LOW);
 | 
			
		||||
      digitalWrite(motor_pin_3, LOW);
 | 
			
		||||
      digitalWrite(motor_pin_4, HIGH);
 | 
			
		||||
      break;
 | 
			
		||||
    } 
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  version() returns the version of the library:
 | 
			
		||||
*/
 | 
			
		||||
int Stepper::version(void)
 | 
			
		||||
{
 | 
			
		||||
  return 4;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										83
									
								
								arduino-0018-linux-x64/libraries/Stepper/Stepper.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								arduino-0018-linux-x64/libraries/Stepper/Stepper.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,83 @@
 | 
			
		|||
/*
 | 
			
		||||
  Stepper.h - - Stepper library for Wiring/Arduino - Version 0.4
 | 
			
		||||
  
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
  Drives a unipolar or bipolar stepper motor using  2 wires or 4 wires
 | 
			
		||||
 | 
			
		||||
  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. 
 | 
			
		||||
 | 
			
		||||
  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.
 | 
			
		||||
 | 
			
		||||
  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);
 | 
			
		||||
 | 
			
		||||
    // 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
 | 
			
		||||
    int speed;          // Speed in RPMs
 | 
			
		||||
    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;        // whether you're driving the motor with 2 or 4 pins
 | 
			
		||||
    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;
 | 
			
		||||
    
 | 
			
		||||
    long last_step_time;      // time stamp in ms of when the last step was taken
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
/*
 | 
			
		||||
 * MotorKnob
 | 
			
		||||
 *
 | 
			
		||||
 * A stepper motor follows the turns of a potentiometer
 | 
			
		||||
 * (or other sensor) on analog input 0.
 | 
			
		||||
 *
 | 
			
		||||
 * http://www.arduino.cc/en/Reference/Stepper
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <Stepper.h>
 | 
			
		||||
 | 
			
		||||
// change this to the number of steps on your motor
 | 
			
		||||
#define STEPS 100
 | 
			
		||||
 | 
			
		||||
// create an instance of the stepper class, specifying
 | 
			
		||||
// the number of steps of the motor and the pins it's
 | 
			
		||||
// attached to
 | 
			
		||||
Stepper stepper(STEPS, 8, 9, 10, 11);
 | 
			
		||||
 | 
			
		||||
// the previous reading from the analog input
 | 
			
		||||
int previous = 0;
 | 
			
		||||
 | 
			
		||||
void setup()
 | 
			
		||||
{
 | 
			
		||||
  // set the speed of the motor to 30 RPMs
 | 
			
		||||
  stepper.setSpeed(30);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void loop()
 | 
			
		||||
{
 | 
			
		||||
  // get the sensor value
 | 
			
		||||
  int val = analogRead(0);
 | 
			
		||||
 | 
			
		||||
  // move a number of steps equal to the change in the
 | 
			
		||||
  // sensor reading
 | 
			
		||||
  stepper.step(val - previous);
 | 
			
		||||
 | 
			
		||||
  // remember the previous value of the sensor
 | 
			
		||||
  previous = val;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								arduino-0018-linux-x64/libraries/Stepper/keywords.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								arduino-0018-linux-x64/libraries/Stepper/keywords.txt
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
#######################################
 | 
			
		||||
# Syntax Coloring Map For Test
 | 
			
		||||
#######################################
 | 
			
		||||
 | 
			
		||||
#######################################
 | 
			
		||||
# Datatypes (KEYWORD1)
 | 
			
		||||
#######################################
 | 
			
		||||
 | 
			
		||||
Stepper	KEYWORD1
 | 
			
		||||
 | 
			
		||||
#######################################
 | 
			
		||||
# Methods and Functions (KEYWORD2)
 | 
			
		||||
#######################################
 | 
			
		||||
 | 
			
		||||
step	KEYWORD2
 | 
			
		||||
setSpeed	KEYWORD2
 | 
			
		||||
version	KEYWORD2
 | 
			
		||||
 | 
			
		||||
######################################
 | 
			
		||||
# Instances (KEYWORD2)
 | 
			
		||||
#######################################
 | 
			
		||||
direction	KEYWORD2
 | 
			
		||||
speed	KEYWORD2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#######################################
 | 
			
		||||
# Constants (LITERAL1)
 | 
			
		||||
#######################################
 | 
			
		||||
		Reference in a new issue