code: func (b *Adaptor) PWMPin(pin string) (sysfsPin sysfs.PWMPinner, err error) {
  	b.mutex.Lock()
  	defer b.mutex.Unlock()
  
  	pinInfo, err := b.translatePwmPin(pin)
  	if err != nil {
  		return nil, err
  	}
  
  	if b.pwmPins[pin] == nil {
  		newPin := sysfs.NewPWMPin(pinInfo.channel)
  		if err = muxPin(pin, "pwm"); err != nil {
  			return
  		}
  
  		if newPin.Path, err = b.findPin(pinInfo.path); err != nil {
  			return
  		}
  		if err = newPin.Export(); err != nil {
  			return
  		}
  		if err = newPin.SetPeriod(pwmDefaultPeriod); err != nil {
  			return
  		}
  		if err = newPin.Enable(true); err != nil {
  			return
  		}
  		b.pwmPins[pin] = newPin
  	}
  
  	sysfsPin = b.pwmPins[pin]
  
  	return
  }
docs: // PWMPin returns matched pwmPin for specified pin number