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 }