refactor lighthardware struct

- add led struct for individual colour LEDs
This commit is contained in:
2024-04-01 06:19:19 -06:00
parent 32d03ddd05
commit 856a6e2d88

84
main.go
View File

@ -11,32 +11,32 @@ type pwm interface {
Channel(machine.Pin) (uint8, error) Channel(machine.Pin) (uint8, error)
} }
type led struct {
pin machine.Pin
pwm pwm
channel uint8
}
type lighthardware struct { type lighthardware struct {
rPin machine.Pin red led
gPin machine.Pin green led
bPin machine.Pin blue led
rPwm pwm
gPwm pwm
bPwm pwm
rCh uint8
gCh uint8
bCh uint8
} }
func (lhw *lighthardware) InitPWM() error { func (lhw *lighthardware) InitPWM() error {
var err error var err error
lhw.rCh, err = lhw.rPwm.Channel(lhw.rPin) lhw.red.channel, err = lhw.red.pwm.Channel(lhw.red.pin)
if err != nil { if err != nil {
return err return err
} }
lhw.gCh, err = lhw.gPwm.Channel(lhw.gPin) lhw.green.channel, err = lhw.green.pwm.Channel(lhw.green.pin)
if err != nil { if err != nil {
return err return err
} }
lhw.bCh, err = lhw.bPwm.Channel(lhw.bPin) lhw.blue.channel, err = lhw.blue.pwm.Channel(lhw.blue.pin)
if err != nil { if err != nil {
return err return err
} }
@ -120,12 +120,18 @@ func main() {
}) })
insideLight := lighthardware{ insideLight := lighthardware{
rPin: machine.GP11, red: led{
gPin: machine.GP13, pin: machine.GP11,
bPin: machine.GP12, pwm: pwm5,
rPwm: pwm5, },
gPwm: pwm6, green: led{
bPwm: pwm6, pin: machine.GP13,
pwm: pwm6,
},
blue: led{
pin: machine.GP12,
pwm: pwm6,
},
} }
err := insideLight.InitPWM() err := insideLight.InitPWM()
@ -133,12 +139,18 @@ func main() {
errs <- err errs <- err
} else { } else {
insideLight2 := lighthardware{ insideLight2 := lighthardware{
rPin: machine.GP8, red: led{
gPin: machine.GP10, pin: machine.GP8,
bPin: machine.GP9, pwm: pwm4,
rPwm: pwm4, },
gPwm: pwm5, green: led{
bPwm: pwm4, pin: machine.GP10,
pwm: pwm5,
},
blue: led{
pin: machine.GP9,
pwm: pwm4,
},
} }
err = insideLight2.InitPWM() err = insideLight2.InitPWM()
@ -146,12 +158,18 @@ func main() {
errs <- err errs <- err
} else { } else {
outsideLight := lighthardware{ outsideLight := lighthardware{
rPin: machine.GP5, red: led{
gPin: machine.GP7, pin: machine.GP5,
bPin: machine.GP6, pwm: pwm2,
rPwm: pwm2, },
gPwm: pwm3, green: led{
bPwm: pwm3, pin: machine.GP7,
pwm: pwm3,
},
blue: led{
pin: machine.GP6,
pwm: pwm3,
},
} }
err = outsideLight.InitPWM() err = outsideLight.InitPWM()
@ -258,7 +276,7 @@ func normal(lights lightSet, inBrightChange <-chan uint32, outBrightChange <-cha
} }
func setNormal(light *lighthardware, brightness uint32) { func setNormal(light *lighthardware, brightness uint32) {
ledset(light.rPwm, light.rCh, brightness) ledset(light.red.pwm, light.red.channel, brightness)
ledset(light.gPwm, light.gCh, brightness) ledset(light.green.pwm, light.green.channel, brightness)
ledset(light.bPwm, light.bCh, brightness) ledset(light.blue.pwm, light.blue.channel, brightness)
} }