diff --git a/convertors/mcp3008/mcp3008.go b/convertors/mcp3008/mcp3008.go index f074a4e..7636e29 100644 --- a/convertors/mcp3008/mcp3008.go +++ b/convertors/mcp3008/mcp3008.go @@ -16,35 +16,20 @@ type mcp3008 struct { var SingleMode byte = 1 var DifferenceMode byte = 0 -func New(mode byte, spiChan, speed int) (*mcp3008, error) { - if err := embd.InitSPI(); err != nil { - return nil, err - } - glog.V(3).Infof("mcp3008: getting spiBus with mode: %v, channel: %v, speed: %v", mode, spiChan, speed) - spiBus := embd.NewSPIBus(embd.SpiMode0, byte(spiChan), speed, 0, 0) - return &mcp3008{mode, spiBus}, nil +func New(mode byte, bus embd.SPIBus) *mcp3008 { + return &mcp3008{mode, bus} } func (m *mcp3008) AnalogValueAt(chanNum int) (int, error) { - var data [3]uint8 + data := make([]uint8, 3) data[0] = 1 data[1] = uint8(m.mode)<<7 | uint8(chanNum)<<4 data[2] = 0 + glog.V(2).Infof("mcp3008: sendingdata buffer %v", data) if err := m.bus.TransferAndRecieveData(data); err != nil { return 0, err } return int(uint16(data[1]&0x03)<<8 | uint16(data[2])), nil } - -func (m *mcp3008) Close() error { - glog.V(2).Infoln("mcp3008: performing cleanup") - if err := m.bus.Close(); err != nil { - return err - } - if err := embd.CloseSPI(); err != nil { - return err - } - return nil -} diff --git a/samples/mcp3008.go b/samples/mcp3008.go index 252f2d1..ff2f09f 100644 --- a/samples/mcp3008.go +++ b/samples/mcp3008.go @@ -8,17 +8,23 @@ import ( "time" "github.com/kidoman/embd/convertors/mcp3008" + + "github.com/kidoman/embd" ) func main() { flag.Parse() - fmt.Println("This is a sample code for mcp3008 10bit 8 channel ADC") + fmt.Println("this is a sample code for mcp3008 10bit 8 channel ADC") - adc, err := mcp3008.New(mcp3008.SingleMode, 0, 1000000) - if err != nil { + if err := embd.InitSPI(); err != nil { panic(err) } - defer adc.Close() + defer embd.CloseSPI() + + spiBus := embd.NewSPIBus(embd.SpiMode0, 0, 1000000, 8, 0) + defer spiBus.Close() + + adc := mcp3008.New(mcp3008.SingleMode, spiBus) for i := 0; i < 20; i++ { time.Sleep(1 * time.Second) @@ -27,7 +33,7 @@ func main() { panic(err) } - fmt.Printf("Analog value is: %v\n", val) + fmt.Printf("analog value is: %v\n", val) } }