fermentord/internal/hw/gpio.go

67 lines
1 KiB
Go
Raw Normal View History

2021-08-10 21:29:24 +00:00
package hw
import (
"github.com/warthog618/gpiod"
)
const (
2022-03-05 19:42:17 +00:00
pinCoolerPower = 23
pinHeaterPower = 24
2021-08-10 21:29:24 +00:00
off = 0
on = 1
)
type Gpio struct {
chip *gpiod.Chip
coolerPower *gpiod.Line
heaterPower *gpiod.Line
}
func NewGpio() (*Gpio, error) {
var err error
p := &Gpio{}
p.chip, err = gpiod.NewChip("gpiochip0", gpiod.WithConsumer("fermentord"))
if err != nil {
return nil, err
}
p.coolerPower, err = p.chip.RequestLine(pinCoolerPower, gpiod.AsOutput(1))
if err != nil {
return nil, err
}
p.heaterPower, err = p.chip.RequestLine(pinHeaterPower, gpiod.AsOutput(1))
if err != nil {
return nil, err
}
return p, nil
}
func (p *Gpio) Close() {
p.coolerPower.SetValue(off)
p.heaterPower.SetValue(off)
p.heaterPower.Close()
p.coolerPower.Close()
p.chip.Close()
}
2021-08-30 20:46:38 +00:00
func (p *Gpio) StartCooler() {
p.coolerPower.SetValue(on)
}
func (p *Gpio) StopCooler() {
p.coolerPower.SetValue(off)
}
func (p *Gpio) StartHeater() {
p.heaterPower.SetValue(on)
}
func (p *Gpio) StopHeater() {
p.heaterPower.SetValue(off)
}