def _set_pwm(self): """ Set pwm values for current settings. """ # adjust color brightness color = Color(self._color.r * self._brightness / 255, self._color.g * self._brightness / 255, self._color.b * self._brightness / 255) # pwm goes to 0% if led is not on if not self._is_on: color = Color(0, 0, 0) # gamma correction? if self._gamma != 1.0: # gamma correction with output sized for 12-bit pwm pwmValues = color.gamma(gamma=GAMMA, max=4095) else: # size output for 12-bit pmw with NO gamma correction pwmValues = [(x * 4096 / 255) for x in color] # scale pwm values based on scale factors pwmValues[0] = round(pwmValues[0] * self._scaleR) pwmValues[1] = round(pwmValues[1] * self._scaleG) pwmValues[2] = round(pwmValues[2] * self._scaleB) # finally set the pwm values self._device.set_multiple_pwm(pwmValues)