1
0
Fork 0
mirror of https://github.com/kidoman/embd synced 2025-07-03 11:57:38 +02:00

mcp3008: added package and samples for mcp3008 10-bit 8-channel adc

This commit is contained in:
kunalpowar 2014-05-03 21:35:09 +05:30
parent 42033238e2
commit 59958d7dfc
7 changed files with 163 additions and 4 deletions

2
samples/.gitignore vendored
View file

@ -24,3 +24,5 @@ universalblinker
us020
watersensor
spi
mcp3008
spimcp3008

33
samples/mcp3008.go Normal file
View file

@ -0,0 +1,33 @@
// +build ignore
package main
import (
"flag"
"fmt"
"time"
"github.com/kidoman/embd/convertors/mcp3008"
)
func main() {
flag.Parse()
fmt.Println("This is a sample code for mcp3008 10bit 8 channel ADC")
adc, err := mcp3008.New(mcp3008.SingleMode, 0, 1000000)
if err != nil {
panic(err)
}
defer adc.Close()
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)
}
}

46
samples/spimcp3008.go Normal file
View file

@ -0,0 +1,46 @@
package main
import (
"flag"
"fmt"
"time"
"github.com/kidoman/embd"
_ "github.com/kidoman/embd/host/all"
)
func main() {
flag.Parse()
if err := embd.InitSPI(); err != nil {
panic(err)
}
bus := embd.NewSPIBus(embd.SpiMode0, 0, 1000000, 8, 0)
defer clean(bus)
for i := 0; i < 30; i++ {
time.Sleep(1 * time.Second)
val, _ := getSensorValue(bus)
fmt.Printf("value is: %v\n", val)
}
}
func clean(bus embd.SPIBus) {
bus.Close()
embd.CloseSPI()
}
func getSensorValue(bus embd.SPIBus) (uint16, error) {
data := make([]uint8, 3)
data[0] = 1
data[1] = 128
data[2] = 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
}