これまで、GOBOT+ArduinoでモーターやLEDをつかってみました。
とはいえ、必ずしもあったドライバーが用意されてるわけじゃありません。
アナログジョイスティックみたいなので操作したいときとか。
アナログピン用のドライバーとしてはAnalogSensorDriverというのがあるので、
これを活用します。
実際のところ
shuzo-kino.hateblo.jp
で使った" アナログジョイスティックDIP化キット[AE-JY-DIP(KIT)]"を動かす場合、
こんな感じになります。
package main import ( "time" "fmt" "gobot.io/x/gobot" "gobot.io/x/gobot/drivers/gpio" "gobot.io/x/gobot/drivers/aio" "gobot.io/x/gobot/platforms/firmata" ) func main() { firmataAdaptor := firmata.NewAdaptor("/dev/tty.usbmodem1421") analogJoyStickX := aio.NewAnalogSensorDriver(firmataAdaptor, "0") analogJoyStickY := aio.NewAnalogSensorDriver(firmataAdaptor, "1") work := func() { // X軸 sensor.On(analogJoyStickX.Data, func(analogData interface{}) { digitalData := uint8( gobot.ToScale(gobot.FromScale(float64(analogData.(int)), 0, 1024), 0, 255), ) fmt.Println("Analog Scale X", analogData) fmt.Println("Digital Scale X", digitalData) }) // Y軸 sensor.On(analogJoyStickY.Data, func(analogData interface{}) { digitalData := uint8( gobot.ToScale(gobot.FromScale(float64(analogData.(int)), 0, 1024), 0, 255), ) fmt.Println("Analog Scale Y", analogData) fmt.Println("Digital Scale Y", digitalData) }) } robot := gobot.NewRobot("AnalogJoyStick", []gobot.Connection{firmataAdaptor}, []gobot.Device{analogJoyStickX,analogJoyStickY}, work, ) robot.Start() }
インターバル(例では100ミリ秒)を入れたい場合、対象の部分をgobot.Everyで囲ってやります
gobot.Every(100*time.Second, func() { //対象動作 )}