@@ -11,6 +11,9 @@ import (
1111 "log"
1212 "time"
1313
14+ "periph.io/x/conn/v3/i2c"
15+ "periph.io/x/conn/v3/i2c/i2creg"
16+
1417 "periph.io/x/conn/v3/gpio/gpioreg"
1518 "periph.io/x/host/v3"
1619
@@ -19,6 +22,8 @@ import (
1922)
2023
2124var (
25+ ifType = flag .String ("iftype" , "spi" , "Interface Type (spi, i2c)" )
26+ i2cAddr = flag .Int ("i2caddr" , 0x68 , "I2C Address - Default 0x68" )
2227 accRes = flag .String ("accRes" , "2" , "Acceleration resolution (2, 4, 8, 16G)" )
2328 continuous = flag .Bool ("cont" , false , "Continuous read" )
2429 sensitivity int
@@ -44,16 +49,28 @@ func main() {
4449 if _ , err := host .Init (); err != nil {
4550 log .Fatal ("Error initializing host" , err )
4651 }
47- cs := gpioreg .ByName ("8" )
48- if cs == nil {
49- log .Fatal ("Can't initialize CS pin" )
52+
53+ var t * mpu9250.Transport
54+ var err error
55+
56+ if * ifType == "spi" {
57+ cs := gpioreg .ByName ("8" )
58+ if cs == nil {
59+ log .Fatal ("Can't initialize CS pin" )
60+ }
61+ t , err = mpu9250 .NewSpiTransport ("" , cs )
62+ } else {
63+ var bus i2c.Bus
64+ bus , err = i2creg .Open ("" )
65+ if err == nil {
66+ t , err = mpu9250 .NewI2cTransport (bus , uint16 (* i2cAddr ))
67+ }
5068 }
51- t , err := mpu9250 .NewSpiTransport ("" , cs )
5269 if err != nil {
53- log .Fatal ("Can't initialize SPI bus " , err )
70+ log .Fatalf ("Can't initialize %s bus: %s" , * ifType , err )
5471 }
5572
56- dev , err := mpu9250 .New (t )
73+ dev , err := mpu9250 .New (* t )
5774 if err != nil {
5875 log .Fatal (err )
5976 }
@@ -75,15 +92,11 @@ func main() {
7592
7693 st , err := dev .SelfTest ()
7794 if err != nil {
78- log .Fatal ("Self test failed" , err )
95+ log .Fatal ("Self test failed: " , err )
7996 }
8097
8198 if err = dev .Calibrate (); err != nil {
82- log .Fatal ("Can't calibrate" , err )
83- }
84-
85- if err != nil {
86- log .Fatal ("Can't render self-test " , err )
99+ log .Fatal ("Can't calibrate: " , err )
87100 }
88101
89102 fmt .Printf ("Accelerometer Deviation: X: %.2f%%, Y: %.2f%%, Z:%.2f%%\n " , st .AccelDeviation .X , st .AccelDeviation .Y , st .AccelDeviation .Z )
0 commit comments