2010-10-28 06:39:36 -07:00
|
|
|
|
|
|
|
/*
|
|
|
|
Stepper Motor Control - speed control
|
|
|
|
|
|
|
|
This program drives a unipolar or bipolar stepper motor.
|
|
|
|
The motor is attached to digital pins 8 - 11 of the Arduino.
|
|
|
|
A potentiometer is connected to analog input 0.
|
|
|
|
|
|
|
|
The motor will rotate in a clockwise direction. The higher the potentiometer value,
|
|
|
|
the faster the motor speed. Because setSpeed() sets the delay between steps,
|
|
|
|
you may notice the motor is less responsive to changes in the sensor value at
|
|
|
|
low speeds.
|
|
|
|
|
|
|
|
Created 30 Nov. 2009
|
|
|
|
Modified 28 Oct 2010
|
|
|
|
by Tom Igoe
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <Stepper.h>
|
|
|
|
|
|
|
|
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
|
|
|
|
// for your motor
|
|
|
|
|
|
|
|
|
|
|
|
// initialize the stepper library on pins 8 through 11:
|
|
|
|
Stepper myStepper(stepsPerRevolution, 8,9,10,11);
|
|
|
|
|
2012-04-11 04:08:43 -07:00
|
|
|
int stepCount = 0; // number of steps the motor has taken
|
2010-10-28 06:39:36 -07:00
|
|
|
|
|
|
|
void setup() {
|
2012-04-11 04:08:43 -07:00
|
|
|
// nothing to do inside the setup
|
2010-10-28 06:39:36 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
void loop() {
|
|
|
|
// read the sensor value:
|
|
|
|
int sensorReading = analogRead(A0);
|
|
|
|
// map it to a range from 0 to 100:
|
|
|
|
int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
|
|
|
|
// set the motor speed:
|
|
|
|
if (motorSpeed > 0) {
|
|
|
|
myStepper.setSpeed(motorSpeed);
|
|
|
|
// step 1/100 of a revolution:
|
|
|
|
myStepper.step(stepsPerRevolution/100);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|