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