幸い、PWM制御のサーボ用にドライバーがついてます。
こいつを活かしてやります。
gpio - GoDoc
公式のサンプルは、こんな感じ。
D3ピンにつないだサーボを
package main import ( "fmt" "time" "github.com/hybridgroup/gobot" "github.com/hybridgroup/gobot/platforms/firmata" "github.com/hybridgroup/gobot/platforms/gpio" ) func main() { gbot := gobot.NewGobot() firmataAdaptor := firmata.NewFirmataAdaptor("firmata", "/dev/tty.usbmodem1411") servo := gpio.NewServoDriver(firmataAdaptor, "servo", "3") //デジタルの3に繋いでる場合 work := func() { gobot.Every(1*time.Second, func() { i := uint8(gobot.Rand(180)) fmt.Println("Turning", i) servo.Move(i) }) } robot := gobot.NewRobot("servoBot", []gobot.Connection{firmataAdaptor}, []gobot.Device{servo}, work, ) gbot.AddRobot(robot) gbot.Start() }
この例だと、D3に繋いだサーボが動きます。
ほかに、CenterやMax、Minといった使い勝手の良さげな奴もあります。
バスパワーさえちゃんと供給すれば、
こんな感じのコードで
以下のような動きもできるみたいです。
www.youtube.com