diff --git a/go.mod b/go.mod index 74a65fb..5827c3a 100644 --- a/go.mod +++ b/go.mod @@ -4,14 +4,16 @@ module periph.io/x/cmd -go 1.22.6 +go 1.23.0 + +toolchain go1.24.1 require ( - golang.org/x/image v0.19.0 - periph.io/x/conn/v3 v3.7.1 + golang.org/x/image v0.25.0 + periph.io/x/conn/v3 v3.7.2 periph.io/x/d2xx v0.1.1 - periph.io/x/devices/v3 v3.7.1 - periph.io/x/host/v3 v3.8.2 + periph.io/x/devices/v3 v3.7.4 + periph.io/x/host/v3 v3.8.3 ) -require github.com/jonboulle/clockwork v0.4.0 // indirect +require github.com/jonboulle/clockwork v0.5.0 // indirect diff --git a/go.sum b/go.sum index e706492..32b5f23 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,12 @@ -github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4= -github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc= -golang.org/x/image v0.19.0 h1:D9FX4QWkLfkeqaC62SonffIIuYdOk/UE2XKUBgRIBIQ= -golang.org/x/image v0.19.0/go.mod h1:y0zrRqlQRWQ5PXaYCOMLTW2fpsxZ8Qh9I/ohnInJEys= -periph.io/x/conn/v3 v3.7.1 h1:tMjNv3WO8jEz/ePuXl7y++2zYi8LsQ5otbmqGKy3Myg= -periph.io/x/conn/v3 v3.7.1/go.mod h1:c+HCVjkzbf09XzcqZu/t+U8Ss/2QuJj0jgRF6Nye838= +github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= +github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= +golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= +golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= +periph.io/x/conn/v3 v3.7.2 h1:qt9dE6XGP5ljbFnCKRJ9OOCoiOyBGlw7JZgoi72zZ1s= +periph.io/x/conn/v3 v3.7.2/go.mod h1:Ao0b4sFRo4QOx6c1tROJU1fLJN1hUIYggjOrkIVnpGg= periph.io/x/d2xx v0.1.1 h1:LHp+u+qAWLB5THrTT/AzyjdvfUhllvDF5wBJP7uvn+U= periph.io/x/d2xx v0.1.1/go.mod h1:rLM321G11Fc14Pp088khBkmXb70Pxx/kCPaIK7uRUBc= -periph.io/x/devices/v3 v3.7.1 h1:BsExlfYJlZUZoawzpMF7ksgC9f1eBAdqvKRCGvb+VYw= -periph.io/x/devices/v3 v3.7.1/go.mod h1:ezQOe8WknDaMbKZXVwQUQkIauyLyJshwAHkIohHXA94= -periph.io/x/host/v3 v3.8.2 h1:ayKUDzgUCN0g8+/xM9GTkWaOBhSLVcVHGTfjAOi8OsQ= -periph.io/x/host/v3 v3.8.2/go.mod h1:yFL76AesNHR68PboofSWYaQTKmvPXsQH2Apvp/ls/K4= +periph.io/x/devices/v3 v3.7.4 h1:g9CGKTtiXS9iyDFDba4sr9pYde4dy+ZCKRPuKpKJdKo= +periph.io/x/devices/v3 v3.7.4/go.mod h1:FqFG9RotW2aCkfIlAes3qxziwgjRTncTMS5cSOcizNg= +periph.io/x/host/v3 v3.8.3 h1:v90ozCFDWgEyfNElZ+JnOvq0jAdW0vmgjCUy8dYXDds= +periph.io/x/host/v3 v3.8.3/go.mod h1:uKrIpfXjELwHkwGBNe6aos//XiQ/3uxDa1P2BmLV6Ok= diff --git a/mpu9250/main.go b/mpu9250/main.go index 866b394..8102671 100644 --- a/mpu9250/main.go +++ b/mpu9250/main.go @@ -11,6 +11,9 @@ import ( "log" "time" + "periph.io/x/conn/v3/i2c" + "periph.io/x/conn/v3/i2c/i2creg" + "periph.io/x/conn/v3/gpio/gpioreg" "periph.io/x/host/v3" @@ -19,6 +22,8 @@ import ( ) var ( + ifType = flag.String("iftype", "spi", "Interface Type (spi, i2c)") + i2cAddr = flag.Int("i2caddr", 0x68, "I2C Address - Default 0x68") accRes = flag.String("accRes", "2", "Acceleration resolution (2, 4, 8, 16G)") continuous = flag.Bool("cont", false, "Continuous read") sensitivity int @@ -44,16 +49,28 @@ func main() { if _, err := host.Init(); err != nil { log.Fatal("Error initializing host", err) } - cs := gpioreg.ByName("8") - if cs == nil { - log.Fatal("Can't initialize CS pin") + + var t *mpu9250.Transport + var err error + + if *ifType == "spi" { + cs := gpioreg.ByName("8") + if cs == nil { + log.Fatal("Can't initialize CS pin") + } + t, err = mpu9250.NewSpiTransport("", cs) + } else { + var bus i2c.Bus + bus, err = i2creg.Open("") + if err == nil { + t, err = mpu9250.NewI2cTransport(bus, uint16(*i2cAddr)) + } } - t, err := mpu9250.NewSpiTransport("", cs) if err != nil { - log.Fatal("Can't initialize SPI bus ", err) + log.Fatalf("Can't initialize %s bus: %s", *ifType, err) } - dev, err := mpu9250.New(t) + dev, err := mpu9250.New(*t) if err != nil { log.Fatal(err) } @@ -75,15 +92,11 @@ func main() { st, err := dev.SelfTest() if err != nil { - log.Fatal("Self test failed", err) + log.Fatal("Self test failed: ", err) } if err = dev.Calibrate(); err != nil { - log.Fatal("Can't calibrate", err) - } - - if err != nil { - log.Fatal("Can't render self-test ", err) + log.Fatal("Can't calibrate: ", err) } fmt.Printf("Accelerometer Deviation: X: %.2f%%, Y: %.2f%%, Z:%.2f%%\n", st.AccelDeviation.X, st.AccelDeviation.Y, st.AccelDeviation.Z)