code: func (e *Adaptor) PWMPin(pin string) (sysfsPin sysfs.PWMPinner, err error) {
  	sysPin := e.pinmap[pin]
  	if sysPin.pwmPin != -1 {
  		if e.pwmPins[sysPin.pwmPin] == nil {
  			if err = e.DigitalWrite(pin, 1); err != nil {
  				return
  			}
  			if err = changePinMode(e, strconv.Itoa(int(sysPin.pin)), "1"); err != nil {
  				return
  			}
  			e.mutex.Lock()
  			defer e.mutex.Unlock()
  
  			e.pwmPins[sysPin.pwmPin] = sysfs.NewPWMPin(sysPin.pwmPin)
  			if err = e.pwmPins[sysPin.pwmPin].Export(); err != nil {
  				return
  			}
  			if err = e.pwmPins[sysPin.pwmPin].Enable(true); err != nil {
  				return
  			}
  		}
  
  		sysfsPin = e.pwmPins[sysPin.pwmPin]
  		return
  	}
  	err = errors.New("Not a PWM pin")
  	return
  }
docs: // PWMPin returns a sysfs.PWMPin