// test a stepper motor with a Pololu A4988 driver board, onboard led will flash at each step
// this version uses delay() to manage timing
#include <Stepper.h>
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
int preValue=0;
byte directionPin = 8;
byte stepPin = 9;
int pushbutton=2;
int numberOfSteps = 200;
byte ledPin = 13;
int pulseWidthMicros = 20; // microsecondo
int millisbetweenSteps = 10; // milliseconds - or try 100 for slower steps
int statostart;
void setup() {
Serial.begin(9600);
Serial.println("Starting StepperTest");
digitalWrite(ledPin, LOW);
pinMode(directionPin, OUTPUT);
pinMode(stepPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(pushbutton, INPUT);
myStepper.setSpeed(50);
pinMode(A0, INPUT);
// initialize the serial port:
Serial.begin(9600);
}
void loop() {
statostart=digitalRead(pushbutton);
if(digitalRead(pushbutton) == HIGH)
{
digitalWrite(directionPin, HIGH);
for(int n = 0; n < numberOfSteps; n++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delay(millisbetweenSteps);
digitalWrite(ledPin, !digitalRead(ledPin));
}
delay(1000);
digitalWrite(directionPin, LOW);
for(int n = 0; n < numberOfSteps; n++)
{
digitalWrite(stepPin, HIGH);
// delayMicroseconds(pulseWidthMicros); // probably not needed
digitalWrite(stepPin, LOW);
delay(millisbetweenSteps);
digitalWrite(ledPin, !digitalRead(ledPin));
}
}
int potential_value=analogRead(A0);
int value=map(potential_value,0,1023,0,200);
Serial.println(value);
myStepper.step(value-preValue);
preValue=value;
//delay(1500);
}