code: func (a *AdafruitMotorHatDriver) Step(motor, steps int, dir AdafruitDirection, style AdafruitStepStyle) (err error) {
  	secPerStep := a.stepperMotors[motor].secPerStep
  	latestStep := 0
  	if style == AdafruitInterleave {
  		secPerStep = secPerStep / 2.0
  	}
  	if style == AdafruitMicrostep {
  		secPerStep /= float64(stepperMicrosteps)
  		steps *= stepperMicrosteps
  	}
  	if adafruitDebug {
  		log.Printf("[adafruit_driver] %f seconds per step", secPerStep)
  	}
  	for i := 0; i < steps; i++ {
  		if latestStep, err = a.oneStep(motor, dir, style); err != nil {
  			return
  		}
  		time.Sleep(time.Duration(secPerStep) * time.Second)
  	}
  	// As documented in the Adafruit python driver:
  	// This is an edge case, if we are in between full steps, keep going to end on a full step
  	if style == AdafruitMicrostep {
  		for latestStep != 0 && latestStep != stepperMicrosteps {
  			if latestStep, err = a.oneStep(motor, dir, style); err != nil {
  				return
  			}
  			time.Sleep(time.Duration(secPerStep) * time.Second)
  		}
  	}
  	return
  }
docs: // Step will rotate the stepper motor the given number of steps, in the given direction and step style.