tinygo.org/x/drivers@v0.27.1-0.20240509133757-7dbca2a54349/examples/lsm6ds3/main.go (about) 1 // Connects to an LSM6DS3 I2C a 6 axis Inertial Measurement Unit (IMU) 2 package main 3 4 import ( 5 "machine" 6 "time" 7 8 "tinygo.org/x/drivers/lsm6ds3" 9 ) 10 11 func main() { 12 machine.I2C0.Configure(machine.I2CConfig{}) 13 14 accel := lsm6ds3.New(machine.I2C0) 15 err := accel.Configure(lsm6ds3.Configuration{}) 16 if err != nil { 17 for { 18 println("Failed to configure", err.Error()) 19 time.Sleep(time.Second) 20 } 21 } 22 23 for { 24 if !accel.Connected() { 25 println("LSM6DS3 not connected") 26 time.Sleep(time.Second) 27 continue 28 } 29 x, y, z, _ := accel.ReadAcceleration() 30 println("Acceleration:", float32(x)/1000000, float32(y)/1000000, float32(z)/1000000) 31 x, y, z, _ = accel.ReadRotation() 32 println("Gyroscope:", float32(x)/1000000, float32(y)/1000000, float32(z)/1000000) 33 x, _ = accel.ReadTemperature() 34 println("Degrees C", float32(x)/1000, "\n\n") 35 time.Sleep(time.Millisecond * 1000) 36 } 37 }