mirror of
https://github.com/kidoman/embd
synced 2025-07-03 03:47:33 +02:00
Merge pull request #6 from kunalpowar/spi
This commit is contained in:
commit
c28f7a2de9
11 changed files with 589 additions and 0 deletions
3
samples/.gitignore
vendored
3
samples/.gitignore
vendored
|
@ -23,3 +23,6 @@ tmp006
|
|||
universalblinker
|
||||
us020
|
||||
watersensor
|
||||
spi
|
||||
mcp3008
|
||||
spimcp3008
|
||||
|
|
45
samples/mcp3008.go
Normal file
45
samples/mcp3008.go
Normal file
|
@ -0,0 +1,45 @@
|
|||
// +build ignore
|
||||
|
||||
// this sample uses the mcp3008 package to interface with the 8-bit ADC and works without code change on bbb and rpi
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/kidoman/embd"
|
||||
"github.com/kidoman/embd/convertors/mcp3008"
|
||||
_ "github.com/kidoman/embd/host/all"
|
||||
)
|
||||
|
||||
const (
|
||||
channel = 0
|
||||
speed = 1000000
|
||||
bpw = 8
|
||||
delay = 0
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
fmt.Println("this is a sample code for mcp3008 10bit 8 channel ADC")
|
||||
|
||||
if err := embd.InitSPI(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer embd.CloseSPI()
|
||||
|
||||
spiBus := embd.NewSPIBus(embd.SPIMode0, channel, speed, bpw, delay)
|
||||
defer spiBus.Close()
|
||||
|
||||
adc := mcp3008.New(mcp3008.SingleMode, spiBus)
|
||||
|
||||
for i := 0; i < 20; i++ {
|
||||
time.Sleep(1 * time.Second)
|
||||
val, err := adc.AnalogValueAt(0)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("analog value is: %v\n", val)
|
||||
}
|
||||
}
|
48
samples/spi.go
Normal file
48
samples/spi.go
Normal file
|
@ -0,0 +1,48 @@
|
|||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/kidoman/embd"
|
||||
_ "github.com/kidoman/embd/host/all"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if err := embd.InitSPI(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer embd.CloseSPI()
|
||||
|
||||
spiBus := embd.NewSPIBus(embd.SPIMode0, 0, 1000000, 8, 0)
|
||||
defer spiBus.Close()
|
||||
|
||||
dataBuf := [3]uint8{1, 2, 3}
|
||||
|
||||
if err := spiBus.TransferAndRecieveData(dataBuf[:]); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Println("received data is: %v", dataBuf)
|
||||
|
||||
dataReceived, err := spiBus.ReceiveData(3)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Println("received data is: %v", dataReceived)
|
||||
|
||||
dataByte := byte(1)
|
||||
receivedByte, err := spiBus.TransferAndReceiveByte(dataByte)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Println("received byte is: %v", receivedByte)
|
||||
|
||||
receivedByte, err = spiBus.ReceiveByte()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Println("received byte is: %v", receivedByte)
|
||||
}
|
50
samples/spimcp3008.go
Normal file
50
samples/spimcp3008.go
Normal file
|
@ -0,0 +1,50 @@
|
|||
// +build ignore
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/kidoman/embd"
|
||||
_ "github.com/kidoman/embd/host/all"
|
||||
)
|
||||
|
||||
const (
|
||||
channel = 0
|
||||
speed = 1000000
|
||||
bpw = 8
|
||||
delay = 0
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
if err := embd.InitSPI(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer embd.CloseSPI()
|
||||
|
||||
bus := embd.NewSPIBus(embd.SPIMode0, channel, speed, bpw, delay)
|
||||
defer bus.Close()
|
||||
|
||||
for i := 0; i < 30; i++ {
|
||||
time.Sleep(1 * time.Second)
|
||||
val, err := getSensorValue(bus)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("value is: %v\n", val)
|
||||
}
|
||||
}
|
||||
|
||||
func getSensorValue(bus embd.SPIBus) (uint16, error) {
|
||||
data := [3]uint8{1, 128, 0}
|
||||
|
||||
var err error
|
||||
err = bus.TransferAndRecieveData(data[:])
|
||||
if err != nil {
|
||||
return uint16(0), err
|
||||
}
|
||||
return uint16(data[1]&0x03)<<8 | uint16(data[2]), nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue