gobot.io/x/gobot/v2@v2.1.0/examples/tinkerboard_hmc5883l.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  	"log"
    12  	"time"
    13  
    14  	"gobot.io/x/gobot/v2"
    15  	"gobot.io/x/gobot/v2/drivers/i2c"
    16  	"gobot.io/x/gobot/v2/platforms/tinkerboard"
    17  )
    18  
    19  // Wiring
    20  // PWR  Tinkerboard: 1 (+3.3V, VCC), 6, 9, 14, 20 (GND)
    21  // I2C1 Tinkerboard: 3 (SDA), 5 (SCL)
    22  // HMC5883L plate: VCC, GND, SDL, SDA
    23  func main() {
    24  	a := tinkerboard.NewAdaptor()
    25  	hmc := i2c.NewHMC5883LDriver(a)
    26  
    27  	work := func() {
    28  		var x, y, z, h float64
    29  		var err error
    30  
    31  		gobot.Every(1000*time.Millisecond, func() {
    32  			if x, y, z, err = hmc.Read(); err != nil {
    33  				fmt.Println(err)
    34  			} else {
    35  				log.Printf("Xn: %f, Yn: %f, Zn: %f", x, y, z)
    36  			}
    37  			if h, err = hmc.Heading(); err != nil {
    38  				fmt.Println(err)
    39  			} else {
    40  				log.Printf("Heading: %.1f", h)
    41  			}
    42  		})
    43  	}
    44  
    45  	robot := gobot.NewRobot("hcBot",
    46  		[]gobot.Connection{a},
    47  		[]gobot.Device{hmc},
    48  		work,
    49  	)
    50  
    51  	robot.Start()
    52  }