From 6da275f5b4373089cd02a2a6c2c76a1edb06237a Mon Sep 17 00:00:00 2001 From: Karan Misra Date: Thu, 9 Jan 2014 15:48:35 +0530 Subject: [PATCH] pca9685: add SetAnalog method --- controller/pca9685/pca9685.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/controller/pca9685/pca9685.go b/controller/pca9685/pca9685.go index 5dfeea3..7b4b92d 100644 --- a/controller/pca9685/pca9685.go +++ b/controller/pca9685/pca9685.go @@ -8,6 +8,7 @@ import ( "time" "github.com/kid0m4n/go-rpi/i2c" + "github.com/kid0m4n/go-rpi/util" ) const ( @@ -18,6 +19,9 @@ const ( preScaleRegAddr = 0xFE pwm0OnLowReg = 0x6 + + minAnalogValue = 0 + maxAnalogValue = 255 ) // PCA9685 represents a PCA9685 PWM generator. @@ -154,6 +158,11 @@ func (d *PCA9685) SetMicroseconds(channel, us int) (err error) { return d.SetPwm(channel, 0, offTime) } +func (d *PCA9685) SetAnalog(channel int, value byte) (err error) { + offTime := util.Map(int64(value), minAnalogValue, maxAnalogValue, 0, pwmControlPoints-1) + return d.SetPwm(channel, 0, int(offTime)) +} + // Close stops the controller and resets mode and pwm controller registers. func (d *PCA9685) Close() (err error) { if err = d.setup(); err != nil {