Skip to content

Commit 905e306

Browse files
authored
Add mpu9250 demo program (#11)
1 parent 4305ecf commit 905e306

3 files changed

Lines changed: 35 additions & 22 deletions

File tree

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44

55
module periph.io/x/cmd
66

7-
go 1.22.6
7+
go 1.23.0
88

99
require (
10-
golang.org/x/image v0.23.0
11-
periph.io/x/conn/v3 v3.7.1
10+
golang.org/x/image v0.25.0
11+
periph.io/x/conn/v3 v3.7.2
1212
periph.io/x/d2xx v0.1.1
13-
periph.io/x/devices/v3 v3.7.3
13+
periph.io/x/devices/v3 v3.7.4
1414
periph.io/x/host/v3 v3.8.3
1515
)
1616

go.sum

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I=
22
github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60=
3-
golang.org/x/image v0.23.0 h1:HseQ7c2OpPKTPVzNjG5fwJsOTCiiwS4QdsYi5XU6H68=
4-
golang.org/x/image v0.23.0/go.mod h1:wJJBTdLfCCf3tiHa1fNxpZmUI4mmoZvwMCPP0ddoNKY=
5-
periph.io/x/conn/v3 v3.7.1 h1:tMjNv3WO8jEz/ePuXl7y++2zYi8LsQ5otbmqGKy3Myg=
6-
periph.io/x/conn/v3 v3.7.1/go.mod h1:c+HCVjkzbf09XzcqZu/t+U8Ss/2QuJj0jgRF6Nye838=
3+
golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ=
4+
golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs=
5+
periph.io/x/conn/v3 v3.7.2 h1:qt9dE6XGP5ljbFnCKRJ9OOCoiOyBGlw7JZgoi72zZ1s=
6+
periph.io/x/conn/v3 v3.7.2/go.mod h1:Ao0b4sFRo4QOx6c1tROJU1fLJN1hUIYggjOrkIVnpGg=
77
periph.io/x/d2xx v0.1.1 h1:LHp+u+qAWLB5THrTT/AzyjdvfUhllvDF5wBJP7uvn+U=
88
periph.io/x/d2xx v0.1.1/go.mod h1:rLM321G11Fc14Pp088khBkmXb70Pxx/kCPaIK7uRUBc=
9-
periph.io/x/devices/v3 v3.7.3 h1:N/mTFOwDoelfrPgVvN/6ZNCM++ym6GUYBMaTlh3ljKI=
10-
periph.io/x/devices/v3 v3.7.3/go.mod h1:y1T7FtIcs8nYQZG2a8wglb8APSOH+UHZIsh19EBjsqc=
9+
periph.io/x/devices/v3 v3.7.4 h1:g9CGKTtiXS9iyDFDba4sr9pYde4dy+ZCKRPuKpKJdKo=
10+
periph.io/x/devices/v3 v3.7.4/go.mod h1:FqFG9RotW2aCkfIlAes3qxziwgjRTncTMS5cSOcizNg=
1111
periph.io/x/host/v3 v3.8.3 h1:v90ozCFDWgEyfNElZ+JnOvq0jAdW0vmgjCUy8dYXDds=
1212
periph.io/x/host/v3 v3.8.3/go.mod h1:uKrIpfXjELwHkwGBNe6aos//XiQ/3uxDa1P2BmLV6Ok=

mpu9250/main.go

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2124
var (
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

Comments
 (0)