package hw import ( "github.com/warthog618/gpiod" ) const ( pinCoolerPower = 23 pinHeaterPower = 24 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() } 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) }