From a37adc2a021facc1b9c7ea8e19d053f09d5c9cc9 Mon Sep 17 00:00:00 2001 From: Giovanni Harting <539@idlegandalf.com> Date: Fri, 29 Jun 2018 09:59:48 +0200 Subject: [PATCH] fixed gamma correction formula --- main.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index a61a996..06dc782 100644 --- a/main.go +++ b/main.go @@ -35,7 +35,7 @@ type config struct { Address int MinPulse uint16 MaxPulse uint16 - Gamma float64 + Gamma float64 } } @@ -46,8 +46,8 @@ type LedDaemon struct { } var log = logging.MustGetLogger("LedD") -var ledDaemon* LedDaemon -var pca9685* PCA9685 +var ledDaemon *LedDaemon +var pca9685 *PCA9685 var pwmMap map[int32]*Pwm var readConfig config @@ -97,13 +97,14 @@ func (daemon *LedDaemon) receive() { continue } - v = int32(math.Min(math.Round(math.Pow(float64(v), readConfig.Pca9685.Gamma)), RESOLUTION)) + vPerc := float64(v) / float64(RESOLUTION) + vPerc = math.Pow(vPerc, 1/readConfig.Pca9685.Gamma) if pwm, ok := pwmMap[c]; ok { - pwm.setPercentage(float32(v) / RESOLUTION * 100) + pwm.setPercentage(float32(vPerc * 100)) } else { pwmMap[c] = pca9685.NewPwm(int(c)) - pwmMap[c].setPercentage(float32(v) / RESOLUTION * 100) + pwmMap[c].setPercentage(float32(vPerc * 100)) } } }