mirror of
https://github.com/kidoman/embd
synced 2024-12-22 12:50:19 +01:00
documentation update
This commit is contained in:
parent
b3939bf8c7
commit
dba160911b
23
doc.go
23
doc.go
@ -1,2 +1,23 @@
|
|||||||
// Package rpi provides modules which will help gophers deal with various sensors.
|
/*
|
||||||
|
Package rpi provides modules which will help gophers deal with various sensors.
|
||||||
|
|
||||||
|
Use the default i2c bus to read/write data:
|
||||||
|
|
||||||
|
value, err := i2c.ReadInt(0x1E, 0x03)
|
||||||
|
...
|
||||||
|
value := make([]byte, 6)
|
||||||
|
err := i2c.ReadFromReg(0x77, 0xF6, value)
|
||||||
|
...
|
||||||
|
err := i2c.WriteToReg(0x1E, 0x02, 0x00)
|
||||||
|
|
||||||
|
Read data from the BMP085 sensor:
|
||||||
|
|
||||||
|
temp, err := bmp085.Temperature()
|
||||||
|
...
|
||||||
|
altitude, err := bmp085.Altitude()
|
||||||
|
|
||||||
|
Find out the heading from the LSM303 magnetometer:
|
||||||
|
|
||||||
|
heading, err := lsm303.Heading()
|
||||||
|
*/
|
||||||
package rpi
|
package rpi
|
||||||
|
@ -38,14 +38,21 @@ const (
|
|||||||
pollDelay = 250
|
pollDelay = 250
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// A BMP085 implements access to the Bosch BMP085 sensor.
|
||||||
type BMP085 interface {
|
type BMP085 interface {
|
||||||
|
// SetPollDelay sets the delay between runs of the data acquisition loop.
|
||||||
SetPollDelay(delay int)
|
SetPollDelay(delay int)
|
||||||
|
|
||||||
|
// Temperature returns the current temperature reading.
|
||||||
Temperature() (temp float64, err error)
|
Temperature() (temp float64, err error)
|
||||||
|
// Pressure returns the current pressure reading.
|
||||||
Pressure() (pressure int, err error)
|
Pressure() (pressure int, err error)
|
||||||
|
// Altitude returns the current altitude reading.
|
||||||
Altitude() (altitude float64, err error)
|
Altitude() (altitude float64, err error)
|
||||||
|
|
||||||
|
// Run starts the sensor data acquisition loop.
|
||||||
Run() error
|
Run() error
|
||||||
|
// Close.
|
||||||
Close()
|
Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,6 +76,7 @@ type bmp085 struct {
|
|||||||
debug bool
|
debug bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Default instance of the BMP085 sensor.
|
||||||
var Default = New(i2c.Default)
|
var Default = New(i2c.Default)
|
||||||
|
|
||||||
// New creates a new BMP085 interface. The bus variable controls
|
// New creates a new BMP085 interface. The bus variable controls
|
||||||
@ -220,7 +228,7 @@ func (d *bmp085) measureTemp() (temp uint16, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return temperature reading.
|
// Temperature returns the current temperature reading.
|
||||||
func (d *bmp085) Temperature() (temp float64, err error) {
|
func (d *bmp085) Temperature() (temp float64, err error) {
|
||||||
|
|
||||||
select {
|
select {
|
||||||
@ -340,7 +348,7 @@ func (d *bmp085) measurePressureAndAltitude() (pressure int32, altitude float64,
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return pressure reading.
|
// Pressure returns the current pressure reading.
|
||||||
func (d *bmp085) Pressure() (pressure int, err error) {
|
func (d *bmp085) Pressure() (pressure int, err error) {
|
||||||
if err = d.calibrate(); err != nil {
|
if err = d.calibrate(); err != nil {
|
||||||
return
|
return
|
||||||
@ -364,7 +372,7 @@ func (d *bmp085) Pressure() (pressure int, err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return altitude reading.
|
// Altitude returns the current altitude reading.
|
||||||
func (d *bmp085) Altitude() (altitude float64, err error) {
|
func (d *bmp085) Altitude() (altitude float64, err error) {
|
||||||
if err = d.calibrate(); err != nil {
|
if err = d.calibrate(); err != nil {
|
||||||
return
|
return
|
||||||
@ -385,7 +393,7 @@ func (d *bmp085) Altitude() (altitude float64, err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the sensor data acquisition loop.
|
// Run starts the sensor data acquisition loop.
|
||||||
func (d *bmp085) Run() (err error) {
|
func (d *bmp085) Run() (err error) {
|
||||||
go func() {
|
go func() {
|
||||||
d.quit = make(chan struct{})
|
d.quit = make(chan struct{})
|
||||||
@ -436,22 +444,27 @@ func (d *bmp085) Close() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return temperature reading.
|
// SetPollDelay sets the delay between runs of the data acquisition loop.
|
||||||
|
func SetPollDelay(delay int) {
|
||||||
|
Default.SetPollDelay(delay)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Temperature returns the current temperature reading.
|
||||||
func Temperature() (temp float64, err error) {
|
func Temperature() (temp float64, err error) {
|
||||||
return Default.Temperature()
|
return Default.Temperature()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return pressure reading.
|
// Pressure returns the current pressure reading.
|
||||||
func Pressure() (pressure int, err error) {
|
func Pressure() (pressure int, err error) {
|
||||||
return Default.Pressure()
|
return Default.Pressure()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return altitude reading.
|
// Altitude returns the current altitude reading.
|
||||||
func Altitude() (altitude float64, err error) {
|
func Altitude() (altitude float64, err error) {
|
||||||
return Default.Altitude()
|
return Default.Altitude()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the sensor data acquisition loop.
|
// Run starts the sensor data acquisition loop.
|
||||||
func Run() (err error) {
|
func Run() (err error) {
|
||||||
return Default.Run()
|
return Default.Run()
|
||||||
}
|
}
|
||||||
|
@ -15,25 +15,25 @@ const (
|
|||||||
|
|
||||||
magConfigRegA = 0x00
|
magConfigRegA = 0x00
|
||||||
|
|
||||||
MagHz75 = 0x00
|
MagHz75 = 0x00 // ODR = 0.75 Hz
|
||||||
Mag1Hz5 = 0x04
|
Mag1Hz5 = 0x04 // ODR = 1.5 Hz
|
||||||
Mag3Hz = 0x08
|
Mag3Hz = 0x08 // ODR = 3 Hz
|
||||||
Mag7Hz5 = 0x0C
|
Mag7Hz5 = 0x0C // ODR = 7.5 Hz
|
||||||
Mag15Hz = 0x10
|
Mag15Hz = 0x10 // ODR = 15 Hz
|
||||||
Mag30Hz = 0x14
|
Mag30Hz = 0x14 // ODR = 30 Hz
|
||||||
Mag75Hz = 0x18
|
Mag75Hz = 0x18 // ODR = 75 Hz
|
||||||
MagNormal = 0x00
|
MagNormal = 0x00 // Normal mode
|
||||||
MagPositiveBias = 0x01
|
MagPositiveBias = 0x01 // Positive bias mode
|
||||||
MagNegativeBias = 0x02
|
MagNegativeBias = 0x02 // Negative bias mode
|
||||||
|
|
||||||
MagCRADefault = Mag15Hz | MagNormal
|
MagCRADefault = Mag15Hz | MagNormal // 15 Hz and normal mode is the default
|
||||||
|
|
||||||
magModeReg = 0x02
|
magModeReg = 0x02
|
||||||
|
|
||||||
MagContinuous = 0x00
|
MagContinuous = 0x00 // Continuous conversion mode
|
||||||
MagSleep = 0x03
|
MagSleep = 0x03 // Sleep mode
|
||||||
|
|
||||||
MagMRDefault = MagContinuous
|
MagMRDefault = MagContinuous // Continuous conversion is the default
|
||||||
|
|
||||||
magDataSignal = 0x02
|
magDataSignal = 0x02
|
||||||
magData = 0x03
|
magData = 0x03
|
||||||
@ -41,12 +41,17 @@ const (
|
|||||||
pollDelay = 250
|
pollDelay = 250
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// A LSM303 implements access to a LSM303 sensor.
|
||||||
type LSM303 interface {
|
type LSM303 interface {
|
||||||
|
// SetPollDelay sets the delay between runs of the data acquisition loop.
|
||||||
SetPollDelay(delay int)
|
SetPollDelay(delay int)
|
||||||
|
|
||||||
|
// Heading returns the current heading [0, 360).
|
||||||
Heading() (heading float64, err error)
|
Heading() (heading float64, err error)
|
||||||
|
|
||||||
|
// Run starts the sensor data acquisition loop.
|
||||||
Run() error
|
Run() error
|
||||||
|
// Close closes the sensor data acquisition loop and put the LSM303 into sleep mode.
|
||||||
Close() error
|
Close() error
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,6 +69,7 @@ type lsm303 struct {
|
|||||||
debug bool
|
debug bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Default instance of the LSM303 sensor.
|
||||||
var Default = New(i2c.Default)
|
var Default = New(i2c.Default)
|
||||||
|
|
||||||
// New creates a new LSM303 interface. The bus variable controls
|
// New creates a new LSM303 interface. The bus variable controls
|
||||||
@ -126,7 +132,7 @@ func (d *lsm303) measureHeading() (heading float64, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return heading [0, 360).
|
// Heading returns the current heading [0, 360).
|
||||||
func (d *lsm303) Heading() (heading float64, err error) {
|
func (d *lsm303) Heading() (heading float64, err error) {
|
||||||
select {
|
select {
|
||||||
case heading = <-d.headings:
|
case heading = <-d.headings:
|
||||||
@ -139,7 +145,7 @@ func (d *lsm303) Heading() (heading float64, err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the sensor data acquisition loop.
|
// Run starts the sensor data acquisition loop.
|
||||||
func (d *lsm303) Run() (err error) {
|
func (d *lsm303) Run() (err error) {
|
||||||
go func() {
|
go func() {
|
||||||
d.quit = make(chan struct{})
|
d.quit = make(chan struct{})
|
||||||
@ -179,17 +185,22 @@ func (d *lsm303) Close() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return heading [0, 360).
|
// SetPollDelay sets the delay between runs of the data acquisition loop.
|
||||||
|
func SetPollDelay(delay int) {
|
||||||
|
Default.SetPollDelay(delay)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Heading returns the current heading [0, 360).
|
||||||
func Heading() (heading float64, err error) {
|
func Heading() (heading float64, err error) {
|
||||||
return Default.Heading()
|
return Default.Heading()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the sensor data acquisition loop.
|
// Run starts the sensor data acquisition loop.
|
||||||
func Run() (err error) {
|
func Run() (err error) {
|
||||||
return Default.Run()
|
return Default.Run()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close the sensor data acquisition loop and put the LSM303 into sleep mode.
|
// Close closes the sensor data acquisition loop and put the LSM303 into sleep mode.
|
||||||
func Close() (err error) {
|
func Close() (err error) {
|
||||||
return Default.Close()
|
return Default.Close()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user