Accelstepper function

#include <AccelStepper.h>

AccelStepper stepper1(AccelStepper::DRIVER, 4, 5);

enum {Idle, Move3000CW, Move500CCW} StepperState;

void setup()
{
  stepper1.setCurrentPosition(0);
  stepper1.setMaxSpeed(1000.0);
  stepper1.setAcceleration(800.0);

  // move 3000 CW steps
  stepper1.move(3000);
  StepperState = Move3000CW;
}

void loop()
{
  switch (StepperState)
  {
    case Idle: break;

    case Move3000CW:
      stepper1.run();
      if (stepper1.distanceToGo() == 0)
      {
        stepper1.move(-500);
        StepperState = Move500CCW;
      }
      break;

    case Move500CCW:
      stepper1.run();
      if (stepper1.distanceToGo() == 0)
      {
        StepperState = Idle;
      }
      break;
  }
}