gobot.io/x/gobot/v2@v2.1.0/examples/raspi_ina3221.go (about)

     1  //go:build example
     2  // +build example
     3  
     4  //
     5  // Do not build by default.
     6  
     7  package main
     8  
     9  import (
    10  	"fmt"
    11  	"time"
    12  
    13  	"gobot.io/x/gobot/v2"
    14  	"gobot.io/x/gobot/v2/drivers/i2c"
    15  	"gobot.io/x/gobot/v2/platforms/raspi"
    16  )
    17  
    18  func main() {
    19  
    20  	r := raspi.NewAdaptor()
    21  	ina := i2c.NewINA3221Driver(r)
    22  
    23  	work := func() {
    24  
    25  		gobot.Every(5*time.Second, func() {
    26  			for _, ch := range []i2c.INA3221Channel{i2c.INA3221Channel1, i2c.INA3221Channel2, i2c.INA3221Channel3} {
    27  				val, err := ina.GetBusVoltage(ch)
    28  				if err != nil {
    29  					fmt.Printf("INA3221Channel %v Bus Voltage error: %v\n", ch, err)
    30  				}
    31  				fmt.Printf("INA3221Channel %v Bus Voltage: %fV\n", ch, val)
    32  
    33  				val, err = ina.GetShuntVoltage(ch)
    34  				if err != nil {
    35  					fmt.Printf("INA3221Channel %v Shunt Voltage error: %v\n", ch, err)
    36  				}
    37  				fmt.Printf("INA3221Channel %v Shunt Voltage: %fV\n", ch, val)
    38  
    39  				val, err = ina.GetCurrent(ch)
    40  				if err != nil {
    41  					fmt.Printf("INA3221Channel %v Current error: %v\n", ch, err)
    42  				}
    43  				fmt.Printf("INA3221Channel %v Current: %fmA\n", ch, val)
    44  
    45  				val, err = ina.GetLoadVoltage(ch)
    46  				if err != nil {
    47  					fmt.Printf("INA3221Channel %v Load Voltage error: %v\n", ch, err)
    48  				}
    49  				fmt.Printf("INA3221Channel %v Load Voltage: %fV\n", ch, val)
    50  			}
    51  		})
    52  	}
    53  
    54  	robot := gobot.NewRobot("INA3221 Robot",
    55  		[]gobot.Connection{r},
    56  		[]gobot.Device{ina},
    57  		work,
    58  	)
    59  
    60  	robot.Start()
    61  }