code: func NewPCA9685Driver(a Connector, options ...func(Config)) *PCA9685Driver {
  	p := &PCA9685Driver{
  		name:      gobot.DefaultName("PCA9685"),
  		connector: a,
  		Config:    NewConfig(),
  		Commander: gobot.NewCommander(),
  	}
  
  	for _, option := range options {
  		option(p)
  	}
  
  	p.AddCommand("PwmWrite", func(params map[string]interface{}) interface{} {
  		pin := params["pin"].(string)
  		val, _ := strconv.Atoi(params["val"].(string))
  		return p.PwmWrite(pin, byte(val))
  	})
  	p.AddCommand("ServoWrite", func(params map[string]interface{}) interface{} {
  		pin := params["pin"].(string)
  		val, _ := strconv.Atoi(params["val"].(string))
  		return p.ServoWrite(pin, byte(val))
  	})
  	p.AddCommand("SetPWM", func(params map[string]interface{}) interface{} {
  		channel, _ := strconv.Atoi(params["channel"].(string))
  		on, _ := strconv.Atoi(params["on"].(string))
  		off, _ := strconv.Atoi(params["off"].(string))
  		return p.SetPWM(channel, uint16(on), uint16(off))
  	})
  	p.AddCommand("SetPWMFreq", func(params map[string]interface{}) interface{} {
  		freq, _ := strconv.ParseFloat(params["freq"].(string), 32)
  		return p.SetPWMFreq(float32(freq))
  	})
  
  	return p
  }
docs: // NewPCA9685Driver creates a new driver with specified i2c interface
  // Params:
  //		conn Connector - the Adaptor to use with this Driver
  //
  // Optional params:
  //		i2c.WithBus(int):	bus to use with this driver
  //		i2c.WithAddress(int):	address to use with this driver
  //