fixed wrong led off/on register setting

This commit is contained in:
2019-05-03 20:25:45 +02:00
parent 1500fa5d93
commit 5c2fe2f073
3 changed files with 14 additions and 17 deletions

17
main.go
View File

@@ -1,19 +1,18 @@
package main package main
import ( import (
"encoding/binary"
"fmt"
"gen/ledd"
"github.com/golang/protobuf/proto"
"github.com/op/go-logging" "github.com/op/go-logging"
"golang.org/x/exp/io/i2c" "golang.org/x/exp/io/i2c"
"gopkg.in/yaml.v2" "gopkg.in/yaml.v2"
"io/ioutil"
"net"
"os" "os"
"os/signal" "os/signal"
"syscall" "syscall"
"io/ioutil"
"net"
"encoding/binary"
"gen/ledd"
"github.com/golang/protobuf/proto"
"fmt"
"math"
) )
// CONSTANTS // CONSTANTS
@@ -89,7 +88,7 @@ func (daemon *LedDaemon) receive() {
switch msg := backendMsg.Msg.(type) { switch msg := backendMsg.Msg.(type) {
case *ledd.BackendWrapperMessage_MLedd: case *ledd.BackendWrapperMessage_MLedd:
daemon.name = msg.MLedd.Name daemon.name = msg.MLedd.Name
log.Infof("Connection with %s etablished; backend registered", msg.MLedd.Name) log.Infof("Connection with %s established; backend registered", msg.MLedd.Name)
case *ledd.BackendWrapperMessage_MSetChannel: case *ledd.BackendWrapperMessage_MSetChannel:
for c, v := range msg.MSetChannel.NewChannelValues { for c, v := range msg.MSetChannel.NewChannelValues {
if c > CHANNEL { if c > CHANNEL {
@@ -98,7 +97,7 @@ func (daemon *LedDaemon) receive() {
} }
vPerc := float64(v) / float64(RESOLUTION) vPerc := float64(v) / float64(RESOLUTION)
vPerc = math.Pow(vPerc, 1/readConfig.Pca9685.Gamma) //vPerc = math.Pow(vPerc, 1/readConfig.Pca9685.Gamma)
if pwm, ok := pwmMap[c]; ok { if pwm, ok := pwmMap[c]; ok {
pwm.setPercentage(float32(vPerc * 100)) pwm.setPercentage(float32(vPerc * 100))

View File

@@ -168,13 +168,11 @@ func (p *PCA9685) setAllPwm(on uint16, off uint16) {
} }
func (p *PCA9685) setPwm(pwm int, on uint16, off uint16) { func (p *PCA9685) setPwm(pwm int, on uint16, off uint16) {
onB := byte(on)
offB := byte(off)
p.i2cBus.WriteReg(LED0_ON_L+byte(4)*byte(pwm), []byte{onB & 0xF0}) p.i2cBus.WriteReg(LED0_ON_H+byte(4)*byte(pwm), []byte{byte(on >> 8)})
p.i2cBus.WriteReg(LED0_ON_H+byte(4)*byte(pwm), []byte{onB & 0x0F}) p.i2cBus.WriteReg(LED0_ON_L+byte(4)*byte(pwm), []byte{byte(on & 0x00FF)})
p.i2cBus.WriteReg(LED0_OFF_L+byte(4)*byte(pwm), []byte{offB & 0xF0}) p.i2cBus.WriteReg(LED0_OFF_H+byte(4)*byte(pwm), []byte{byte(off >> 8)})
p.i2cBus.WriteReg(LED0_OFF_H+byte(4)*byte(pwm), []byte{offB & 0x0F}) p.i2cBus.WriteReg(LED0_OFF_L+byte(4)*byte(pwm), []byte{byte(off & 0x00FF)})
} }
func (pwm *Pwm) setPercentage(percentage float32) error { func (pwm *Pwm) setPercentage(percentage float32) error {
@@ -183,7 +181,7 @@ func (pwm *Pwm) setPercentage(percentage float32) error {
} }
pwm.pca.log.Info(fmt.Sprintf("Setting pwm #%v to %v%% at \"%v\" device.", pwm.pin, percentage, pwm.pca.name)) pwm.pca.log.Info(fmt.Sprintf("Setting pwm #%v to %v%% at \"%v\" device.", pwm.pin, percentage, pwm.pca.name))
pwm.pca.setPwm(pwm.pin, 0, uint16(percentage*float32(pwm.pca.maxPulse))) pwm.pca.setPwm(pwm.pin, 0, uint16((percentage/100)*float32(pwm.pca.maxPulse)))
return nil return nil
} }

2
proto

Submodule proto updated: b0f65bb09a...3d37eb67b3