code: func NewStepperDriver(a DigitalWriter, pins [4]string, phase phase, stepsPerRev uint) *StepperDriver {
  	s := &StepperDriver{
  		name:        gobot.DefaultName("Stepper"),
  		connection:  a,
  		pins:        pins,
  		phase:       phase,
  		stepsPerRev: stepsPerRev,
  		moving:      false,
  		direction:   "forward",
  		stepNum:     0,
  		speed:       1,
  		mutex:       &sync.Mutex{},
  		Commander:   gobot.NewCommander(),
  	}
  	s.speed = s.GetMaxSpeed()
  
  	s.AddCommand("Move", func(params map[string]interface{}) interface{} {
  		steps, _ := strconv.Atoi(params["steps"].(string))
  		return s.Move(steps)
  	})
  	s.AddCommand("Run", func(params map[string]interface{}) interface{} {
  		return s.Run()
  	})
  	s.AddCommand("Halt", func(params map[string]interface{}) interface{} {
  		return s.Halt()
  	})
  
  	return s
  }
docs: // NewStepperDriver returns a new StepperDriver given a
  // DigitalWriter
  // Pins - To which the stepper is connected
  // Phase - Defined by StepperModes {SinglePhaseStepping, DualPhaseStepping, HalfStepping}
  // Steps - No of steps per revolution of Stepper motor