void Dome::step(long val)
{
  int move = abs(val);
  int moved = 0;
  bool hithalf = false;
  int accel = move / 2;
  
  while(move--)
  {
    if(Serial.available() > 0)
        break;
    motor.setSpeed(constrain(moved, MINSPEED, MAXSPEED));
    motor.step(1, (val > 0)?BACKWARD:FORWARD, DOUBLE);
    (val > 0)?position++:position--;
    if(!hithalf)
    {
      moved++;
      if(moved >= accel)
        hithalf = true;
    }
    else
    {
      moved--;
    }
  }
}
void loop() {
    if (Serial.available() > 0) {
        int inByte = Serial.read();

        switch (inByte) {
        case 'a':    
            motor.step(1, BACKWARD, INTERLEAVE);
            Serial.println("Moved 1");
            break;
        case 'b':    
            motor.step(2, BACKWARD, INTERLEAVE);
            Serial.println("Moved 2");
            break;
        } 
    }
}
void setup() {
    Serial.begin(9600);           // set up Serial library at 9600 bps
    Serial.println("Stepper test!");

    motor.setSpeed(10);  // 10 rpm   

    motor.release();
    delay(1000);
    motor.step(100, BACKWARD, INTERLEAVE); 
}