Go to file
Karan Misra d171cfdc90 documentation changes 2014-03-23 15:47:58 +05:30
controller documentation changes 2014-03-23 15:47:58 +05:30
interface/keypad/matrix4x3 bring the matrix4x3 library up to date 2014-03-03 00:55:20 +05:30
motion/servo kid0m4n/go-rpi -> kidoman/embd 2014-02-10 05:10:06 +05:30
samples documentation changes 2014-03-23 15:47:58 +05:30
sensor documentation changes 2014-03-23 15:47:58 +05:30
spi Added SPI Library 2014-01-30 16:20:43 +05:30
util add test for Map 2014-03-02 14:53:09 +05:30
.gitignore bring in the idea of a hardware abstraction layer 2014-02-27 04:24:53 +05:30
.travis.yml - add a benchmark test for pinMap lookup 2014-03-23 05:23:25 +05:30
AUTHORS added support for us020 ultra sonic range finder 2013-12-13 05:51:22 +05:30
LICENSE initial commit 2013-12-08 17:39:41 +05:30
README.md documentation changes 2014-03-23 15:47:58 +05:30
bbb.go gpio: analogpin doesn't support write (that will come from pwm) 2014-03-23 14:29:56 +05:30
descriptor.go added documentation 2014-03-23 07:21:22 +05:30
detect.go added documentation 2014-03-23 07:21:22 +05:30
detect_test.go simplify package structure 2014-03-03 00:51:23 +05:30
digitalpin.go add documentation 2014-03-23 14:09:31 +05:30
doc.go documentation changes 2014-03-23 15:47:58 +05:30
gpio.go gpio: analogpin doesn't support write (that will come from pwm) 2014-03-23 14:29:56 +05:30
gpiodriver.go gpio: CapNormal -> CapAnalog 2014-03-23 14:11:09 +05:30
gpiodriver_test.go gpio: CapNormal -> CapAnalog 2014-03-23 14:11:09 +05:30
i2c.go add documentation 2014-03-23 14:09:31 +05:30
i2cdriver.go add documentation 2014-03-23 14:09:31 +05:30
led.go add documentation 2014-03-23 14:09:31 +05:30
leddriver.go add documentation 2014-03-23 14:09:31 +05:30
pin.go gpio: CapNormal -> CapAnalog 2014-03-23 14:11:09 +05:30
pin_test.go gpio: CapNormal -> CapAnalog 2014-03-23 14:11:09 +05:30
rpi.go gpio: CapNormal -> CapAnalog 2014-03-23 14:11:09 +05:30
utils.go gpio: make analog pin support more versatile on the bbb 2014-03-23 05:37:28 +05:30

README.md

embd Build Status GoDoc

Supercharged Embedded Programming Framework

Platforms supported

How to use

Package embd provides a supercharged hardware abstraction layer for doing embedded programming on supported platforms like the Raspberry Pi and BeagleBone Black. Most of the examples below will work without change (i.e. the same binary) on all supported platforms. How cool is that?

Although samples are all present in the samples folder, we will show a few choice examples here.

Use the LED driver to toggle LEDs on the BBB:

import "github.com/kidoman/embd"
...
embd.InitLED()
defer embd.CloseLED()
...
led, err := embd.NewLED("USR3")
...
led.Toggle()

Even shorter while prototyping:

import "github.com/kidoman/embd"
...
embd.InitLED()
defer embd.CloseLED()
...
embd.ToggleLED(3)

Control GPIO pins on the RaspberryPi / BeagleBone Black:

import "github.com/kidoman/embd"
...
embd.InitGPIO()
defer embd.CloseGPIO()
...
embd.SetDirection(10, embd.Out)
embd.DigitalWrite(10, embd.High)

Could also do:

import "github.com/kidoman/embd"
...
embd.InitGPIO()
defer embd.CloseGPIO()
...
pin, err := embd.NewDigitalPin(10)
...
pin.SetDirection(embd.Out)
pin.Write(embd.High)

Or read data from the Bosch BMP085 barometric sensor:

import "github.com/kidoman/embd"
import "github.com/kidoman/embd/sensor/bmp085"
...
bus := embd.NewI2CBus(1)
...
baro := bmp085.New(bus)
...
temp, err := baro.Temperature()
altitude, err := baro.Altitude()

Even find out the heading from the LSM303 magnetometer:

import "github.com/kidoman/embd"
import "github.com/kidoman/embd/sensor/lsm303"
...
bus := embd.NewI2CBus(1)
...
mag := lsm303.New(bus)
...
heading, err := mag.Heading()

The above two examples depend on I2C and therefore will work without change on almost all platforms.

Protocols supported

Sensors supported

Interfaces

Controllers