Skip to content

Instantly share code, notes, and snippets.

@logicalguess
Created November 9, 2017 02:36
Show Gist options
  • Save logicalguess/196f4f510e376ac37806c277c75c0008 to your computer and use it in GitHub Desktop.
Save logicalguess/196f4f510e376ac37806c277c75c0008 to your computer and use it in GitHub Desktop.
Gobot program to toggle LEDs through an API
package main
import (
"fmt"
"gobot.io/x/gobot"
"gobot.io/x/gobot/api"
"gobot.io/x/gobot/platforms/firmata"
"gobot.io/x/gobot/drivers/gpio"
"time"
"os"
)
// env GOOS=linux GOARCH=arm GOARM=5 go build
// scp combo pi@10.0.1.7:/home/pi/Arduino
func main() {
master := gobot.NewMaster()
a := api.NewAPI(master)
a.Start()
// /dev/tty.usbmodem1411" on my Mac (used in development)
// /dev/ttyACM0 on Raspberry Pi
f := firmata.NewAdaptor(os.Args[1])
led := gpio.NewLedDriver(f, "13")
work := func() {
gobot.Every(2*time.Second, func() {
led.Toggle()
})
}
blinker := gobot.NewRobot("blinker",
[]gobot.Connection{f},
[]gobot.Device{},
work,
)
leds := make(map[string]*gpio.LedDriver)
blinker.AddCommand("ToggleLED", func(params map[string]interface{}) interface{} {
pin := "6"
pinParam, isPresent := params["pin"]
if isPresent {
pin = pinParam.(string)
}
led, ok := leds[pin]
if !ok {
led = gpio.NewLedDriver(f, pin)
leds[pin] = led
}
led.Toggle()
return fmt.Sprintf("pin %v\n", params)
})
master.AddRobot(blinker)
master.Start()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment