func main() { gbot := gobot.NewMaster() api.NewAPI(gbot).Start() gbot.AddCommand("echo", func(params map[string]interface{}) interface{} { return params["a"] }) loopback := NewLoopbackAdaptor("/dev/null") ping := NewPingDriver(loopback, "1") work := func() { gobot.Every(5*time.Second, func() { fmt.Println(ping.Ping()) }) } r := gobot.NewRobot("TestBot", []gobot.Connection{loopback}, []gobot.Device{ping}, work, ) r.AddCommand("hello", func(params map[string]interface{}) interface{} { return fmt.Sprintf("Hello, %v!", params["greeting"]) }) gbot.AddRobot(r) gbot.Start() }
func main() { keys := keyboard.NewDriver() mqttAdaptor := mqtt.NewAdaptor("tcp://iot.eclipse.org:1883", "conductor") work := func() { keys.On(keyboard.Key, func(data interface{}) { key := data.(keyboard.KeyEvent) switch key.Key { case keyboard.ArrowUp: mqttAdaptor.Publish("rover/frente", []byte{}) case keyboard.ArrowRight: mqttAdaptor.Publish("rover/derecha", []byte{}) case keyboard.ArrowDown: mqttAdaptor.Publish("rover/atras", []byte{}) case keyboard.ArrowLeft: mqttAdaptor.Publish("rover/izquierda", []byte{}) } }) } robot := gobot.NewRobot("keyboardbot", []gobot.Connection{mqttAdaptor}, []gobot.Device{keys}, work, ) robot.Start() }
func main() { master := gobot.NewMaster() a := api.NewAPI(master) a.AddHandler(api.BasicAuth("gort", "klatuu")) a.Debug() a.AddHandler(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, %q \n", html.EscapeString(r.URL.Path)) }) a.Start() master.AddCommand("custom_gobot_command", func(params map[string]interface{}) interface{} { return "This command is attached to the mcp!" }) hello := master.AddRobot(gobot.NewRobot("hello")) hello.AddCommand("hi_there", func(params map[string]interface{}) interface{} { return fmt.Sprintf("This command is attached to the robot %v", hello.Name) }) master.Start() }
func main() { digisparkAdaptor := digispark.NewAdaptor() led := gpio.NewLedDriver(digisparkAdaptor, "0") work := func() { brightness := uint8(0) fadeAmount := uint8(15) gobot.Every(100*time.Millisecond, func() { led.Brightness(brightness) brightness = brightness + fadeAmount if brightness == 0 || brightness == 255 { fadeAmount = -fadeAmount } }) } robot := gobot.NewRobot("pwmBot", []gobot.Connection{digisparkAdaptor}, []gobot.Device{led}, work, ) robot.Start() }
func main() { r := raspi.NewAdaptor() button := gpio.NewButtonDriver(r, "11") led := gpio.NewLedDriver(r, "7") work := func() { button.On(gpio.ButtonPush, func(data interface{}) { fmt.Println("button pressed") led.On() }) button.On(gpio.ButtonRelease, func(data interface{}) { fmt.Println("button released") led.Off() }) } robot := gobot.NewRobot("buttonBot", []gobot.Connection{r}, []gobot.Device{button, led}, work, ) robot.Start() }
func main() { master := gobot.NewMaster() api := api.NewAPI(master) api.Port = "8080" api.Start() pebbleAdaptor := pebble.NewAdaptor() pebbleDriver := pebble.NewDriver(pebbleAdaptor) work := func() { pebbleDriver.SendNotification("Hello Pebble!") pebbleDriver.On(pebbleDriver.Event("button"), func(data interface{}) { fmt.Println("Button pushed: " + data.(string)) }) pebbleDriver.On(pebbleDriver.Event("tap"), func(data interface{}) { fmt.Println("Tap event detected") }) } robot := gobot.NewRobot("pebble", []gobot.Connection{pebbleAdaptor}, []gobot.Device{pebbleDriver}, work, ) master.AddRobot(robot) master.Start() }
func main() { master := gobot.NewMaster() api.NewAPI(master).Start() spheros := map[string]string{ "Sphero-BPO": "/dev/rfcomm0", } for name, port := range spheros { spheroAdaptor := sphero.NewAdaptor(port) spheroDriver := sphero.NewSpheroDriver(spheroAdaptor) work := func() { spheroDriver.SetRGB(uint8(255), uint8(0), uint8(0)) } robot := gobot.NewRobot(name, []gobot.Connection{spheroAdaptor}, []gobot.Device{spheroDriver}, work, ) robot.AddCommand("turn_blue", func(params map[string]interface{}) interface{} { spheroDriver.SetRGB(uint8(0), uint8(0), uint8(255)) return nil }) master.AddRobot(robot) } master.Start() }
func main() { firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0") work := func() { gobot.Every(1*time.Second, func() { val, err := firmataAdaptor.AnalogRead("0") if err != nil { fmt.Println(err) return } voltage := (float64(val) * 5) / 1024 // if using 3.3V replace 5 with 3.3 tempC := (voltage - 0.5) * 100 tempF := (tempC * 9 / 5) + 32 fmt.Printf("%.2f°C\n", tempC) fmt.Printf("%.2f°F\n", tempF) }) } robot := gobot.NewRobot("sensorBot", []gobot.Connection{firmataAdaptor}, []gobot.Device{}, work, ) robot.Start() }
func main() { mqttAdaptor := mqtt.NewAdaptor("tcp://test.mosquitto.org:1883", "blinker") firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0") led := gpio.NewLedDriver(firmataAdaptor, "13") work := func() { mqttAdaptor.On("lights/on", func(data []byte) { led.On() }) mqttAdaptor.On("lights/off", func(data []byte) { led.Off() }) data := []byte("") gobot.Every(1*time.Second, func() { mqttAdaptor.Publish("lights/on", data) }) gobot.Every(2*time.Second, func() { mqttAdaptor.Publish("lights/off", data) }) } robot := gobot.NewRobot("mqttBot", []gobot.Connection{mqttAdaptor, firmataAdaptor}, []gobot.Device{led}, work, ) robot.Start() }
func main() { // use "/dev/ttyUSB0" if connecting with USB cable // use "/dev/ttyAMA0" on devices older than Raspberry Pi 3 Model B megaPiAdaptor := megapi.NewAdaptor("/dev/ttyS0") motor := megapi.NewMotorDriver(megaPiAdaptor, 1) work := func() { speed := int16(0) fadeAmount := int16(30) gobot.Every(100*time.Millisecond, func() { motor.Speed(speed) speed = speed + fadeAmount if speed == 0 || speed == 300 { fadeAmount = -fadeAmount } }) } robot := gobot.NewRobot("megaPiBot", []gobot.Connection{megaPiAdaptor}, []gobot.Device{motor}, work, ) robot.Start() }
func main() { master := gobot.NewMaster() a := api.NewAPI(master) a.Port = "8080" a.Start() pebbleAdaptor := pebble.NewAdaptor() pebbleDriver := pebble.NewDriver(pebbleAdaptor) work := func() { pebbleDriver.On(pebbleDriver.Event("accel"), func(data interface{}) { fmt.Println(data.(string)) }) } robot := gobot.NewRobot("pebble", []gobot.Connection{pebbleAdaptor}, []gobot.Device{pebbleDriver}, work, ) master.AddRobot(robot) master.Start() }
func main() { mqttAdaptor := mqtt.NewAdaptor("tcp://test.mosquitto.org:1883", "pinger") work := func() { mqttAdaptor.On("hello", func(data []byte) { fmt.Println("hello") }) mqttAdaptor.On("hola", func(data []byte) { fmt.Println("hola") }) data := []byte("o") gobot.Every(1*time.Second, func() { mqttAdaptor.Publish("hello", data) }) gobot.Every(5*time.Second, func() { mqttAdaptor.Publish("hola", data) }) } robot := gobot.NewRobot("mqttBot", []gobot.Connection{mqttAdaptor}, work, ) robot.Start() }
func main() { core := particle.NewAdaptor(os.Args[1], os.Args[2]) led := gpio.NewLedDriver(core, "A1") work := func() { brightness := uint8(0) fadeAmount := uint8(25) gobot.Every(500*time.Millisecond, func() { led.Brightness(brightness) brightness = brightness + fadeAmount if brightness == 0 || brightness == 255 { fadeAmount = -fadeAmount } }) } robot := gobot.NewRobot("spark", []gobot.Connection{core}, []gobot.Device{led}, work, ) robot.Start() }
func main() { master := gobot.NewMaster() firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0") red := gpio.NewLedDriver(firmataAdaptor, "7") red.SetName("red") green := gpio.NewLedDriver(firmataAdaptor, "6") green.SetName("green") blue := gpio.NewLedDriver(firmataAdaptor, "5") blue.SetName("blue") work := func() { checkTravis(master.Robot("travis")) gobot.Every(10*time.Second, func() { checkTravis(master.Robot("travis")) }) } robot := gobot.NewRobot("travis", []gobot.Connection{firmataAdaptor}, []gobot.Device{red, green, blue}, work, ) master.AddRobot(robot) master.Start() }
func main() { leapAdaptor := leap.NewAdaptor("127.0.0.1:6437") spheroAdaptor := sphero.NewAdaptor("/dev/tty.Sphero-YBW-RN-SPP") leapDriver := leap.NewDriver(leapAdaptor) spheroDriver := sphero.NewSpheroDriver(spheroAdaptor) work := func() { leapDriver.On(leap.MessageEvent, func(data interface{}) { hands := data.(leap.Frame).Hands if len(hands) > 0 { x := math.Abs(hands[0].Direction[0]) y := math.Abs(hands[0].Direction[1]) z := math.Abs(hands[0].Direction[2]) spheroDriver.SetRGB(scale(x), scale(y), scale(z)) } }) } robot := gobot.NewRobot("leapBot", []gobot.Connection{leapAdaptor, spheroAdaptor}, []gobot.Device{leapDriver, spheroDriver}, work, ) robot.Start() }
func main() { e := joule.NewAdaptor() led0 := gpio.NewLedDriver(e, "100") led1 := gpio.NewLedDriver(e, "101") led2 := gpio.NewLedDriver(e, "102") led3 := gpio.NewLedDriver(e, "103") work := func() { led0.Off() led1.Off() led2.Off() led3.Off() gobot.Every(1*time.Second, func() { led0.Toggle() }) gobot.Every(2*time.Second, func() { led1.Toggle() }) gobot.Every(4*time.Second, func() { led2.Toggle() }) gobot.Every(8*time.Second, func() { led3.Toggle() }) } robot := gobot.NewRobot("blinkBot", []gobot.Connection{e}, []gobot.Device{led0, led1, led2, led3}, work, ) robot.Start() }
func NewSwarmBot(port string) *gobot.Robot { spheroAdaptor := sphero.NewAdaptor(port) spheroDriver := sphero.NewSpheroDriver(spheroAdaptor) spheroDriver.SetName("Sphero" + port) work := func() { spheroDriver.Stop() spheroDriver.On(sphero.Collision, func(data interface{}) { fmt.Println("Collision Detected!") }) gobot.Every(1*time.Second, func() { spheroDriver.Roll(100, uint16(gobot.Rand(360))) }) gobot.Every(3*time.Second, func() { spheroDriver.SetRGB(uint8(gobot.Rand(255)), uint8(gobot.Rand(255)), uint8(gobot.Rand(255)), ) }) } robot := gobot.NewRobot("sphero", []gobot.Connection{spheroAdaptor}, []gobot.Device{spheroDriver}, work, ) return robot }
func main() { adaptor := sphero.NewAdaptor("/dev/rfcomm0") spheroDriver := sphero.NewSpheroDriver(adaptor) work := func() { spheroDriver.SetDataStreaming(sphero.DefaultDataStreamingConfig()) spheroDriver.On(sphero.Collision, func(data interface{}) { fmt.Printf("Collision! %+v\n", data) }) spheroDriver.On(sphero.SensorData, func(data interface{}) { fmt.Printf("Streaming Data! %+v\n", data) }) gobot.Every(3*time.Second, func() { spheroDriver.Roll(30, uint16(gobot.Rand(360))) }) gobot.Every(1*time.Second, func() { r := uint8(gobot.Rand(255)) g := uint8(gobot.Rand(255)) b := uint8(gobot.Rand(255)) spheroDriver.SetRGB(r, g, b) }) } robot := gobot.NewRobot("sphero", []gobot.Connection{adaptor}, []gobot.Device{spheroDriver}, work, ) robot.Start() }
func main() { board := edison.NewAdaptor() screen := i2c.NewGroveLcdDriver(board) work := func() { screen.Write("hello") screen.SetRGB(255, 0, 0) gobot.After(5*time.Second, func() { screen.Clear() screen.Home() screen.SetRGB(0, 255, 0) // set a custom character in the first position screen.SetCustomChar(0, i2c.CustomLCDChars["smiley"]) // add the custom character at the end of the string screen.Write("goodbye\nhave a nice day " + string(byte(0))) gobot.Every(500*time.Millisecond, func() { screen.Scroll(false) }) }) screen.Home() time.Sleep(1 * time.Second) screen.SetRGB(0, 0, 255) } robot := gobot.NewRobot("screenBot", []gobot.Connection{board}, []gobot.Device{screen}, work, ) robot.Start() }
func main() { natsAdaptor := nats.NewAdaptorWithAuth("localhost:4222", 1234, "user", "pass") work := func() { natsAdaptor.On("hello", func(data []byte) { fmt.Println("hello") }) natsAdaptor.On("hola", func(data []byte) { fmt.Println("hola") }) data := []byte("o") gobot.Every(1*time.Second, func() { natsAdaptor.Publish("hello", data) }) gobot.Every(5*time.Second, func() { natsAdaptor.Publish("hola", data) }) } robot := gobot.NewRobot("natsBot", []gobot.Connection{natsAdaptor}, work, ) robot.Start() }
func main() { firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0") led1 := gpio.NewLedDriver(firmataAdaptor, "3") led2 := gpio.NewLedDriver(firmataAdaptor, "4") button := gpio.NewButtonDriver(firmataAdaptor, "2") sensor := gpio.NewAnalogSensorDriver(firmataAdaptor, "0") work := func() { gobot.Every(1*time.Second, func() { led1.Toggle() }) gobot.Every(2*time.Second, func() { led2.Toggle() }) button.On(gpio.ButtonPush, func(data interface{}) { led2.On() }) button.On(gpio.ButtonRelease, func(data interface{}) { led2.Off() }) sensor.On(gpio.Data, func(data interface{}) { fmt.Println("sensor", data) }) } robot := gobot.NewRobot("bot", []gobot.Connection{firmataAdaptor}, []gobot.Device{led1, led2, button, sensor}, work, ) robot.Start() }
func main() { _, currentfile, _, _ := runtime.Caller(0) cascade := path.Join(path.Dir(currentfile), "haarcascade_frontalface_alt.xml") window := opencv.NewWindowDriver() camera := opencv.NewCameraDriver(0) work := func() { var image *cv.IplImage camera.On(opencv.Frame, func(data interface{}) { image = data.(*cv.IplImage) }) gobot.Every(500*time.Millisecond, func() { if image != nil { i := image.Clone() faces := opencv.DetectFaces(cascade, i) i = opencv.DrawRectangles(i, faces, 0, 255, 0, 5) window.ShowImage(i) } }) } robot := gobot.NewRobot("faceBot", []gobot.Connection{}, []gobot.Device{window, camera}, work, ) robot.Start() }
func main() { master := gobot.NewMaster() api.NewAPI(master).Start() e := edison.NewAdaptor() button := gpio.NewButtonDriver(e, "2") led := gpio.NewLedDriver(e, "4") work := func() { button.On(gpio.ButtonPush, func(data interface{}) { led.On() }) button.On(gpio.ButtonRelease, func(data interface{}) { led.Off() }) } robot := gobot.NewRobot("buttonBot", []gobot.Connection{e}, []gobot.Device{led, button}, work, ) master.AddRobot(robot) master.Start() }
func main() { firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0") motor := gpio.NewMotorDriver(firmataAdaptor, "3") work := func() { speed := byte(0) fadeAmount := byte(15) gobot.Every(100*time.Millisecond, func() { motor.Speed(speed) speed = speed + fadeAmount if speed == 0 || speed == 255 { fadeAmount = -fadeAmount } }) } robot := gobot.NewRobot("motorBot", []gobot.Connection{firmataAdaptor}, []gobot.Device{motor}, work, ) robot.Start() }
func main() { board := edison.NewAdaptor() board.SetBoard("miniboard") accel := i2c.NewGroveAccelerometerDriver(board) work := func() { gobot.Every(500*time.Millisecond, func() { if x, y, z, err := accel.XYZ(); err == nil { fmt.Println(x, y, z) fmt.Println(accel.Acceleration(x, y, z)) } else { fmt.Println(err) } }) } robot := gobot.NewRobot("accelBot", []gobot.Connection{board}, []gobot.Device{accel}, work, ) robot.Start() }
func main() { firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0") servo1 := gpio.NewServoDriver(firmataAdaptor, "5") servo2 := gpio.NewServoDriver(firmataAdaptor, "3") leapAdaptor := leap.NewAdaptor("127.0.0.1:6437") leapDriver := leap.NewDriver(leapAdaptor) work := func() { x := 90.0 z := 90.0 leapDriver.On(leap.MessageEvent, func(data interface{}) { if len(data.(leap.Frame).Hands) > 0 { hand := data.(leap.Frame).Hands[0] x = gobot.ToScale(gobot.FromScale(hand.X(), -300, 300), 30, 150) z = gobot.ToScale(gobot.FromScale(hand.Z(), -300, 300), 30, 150) } }) gobot.Every(10*time.Millisecond, func() { servo1.Move(uint8(x)) servo2.Move(uint8(z)) fmt.Println("Current Angle: ", servo1.CurrentAngle, ",", servo2.CurrentAngle) }) } robot := gobot.NewRobot("pwmBot", []gobot.Connection{firmataAdaptor, leapAdaptor}, []gobot.Device{servo1, servo2, leapDriver}, work, ) robot.Start() }
func main() { chipAdaptor := chip.NewAdaptor() wiichuck := i2c.NewWiichuckDriver(chipAdaptor) work := func() { wiichuck.On(wiichuck.Event("joystick"), func(data interface{}) { fmt.Println("joystick", data) }) wiichuck.On(wiichuck.Event("c"), func(data interface{}) { fmt.Println("c") }) wiichuck.On(wiichuck.Event("z"), func(data interface{}) { fmt.Println("z") }) wiichuck.On(wiichuck.Event("error"), func(data interface{}) { fmt.Println("Wiichuck error:", data) }) } robot := gobot.NewRobot("chuck", []gobot.Connection{chipAdaptor}, []gobot.Device{wiichuck}, work, ) robot.Start() }
func main() { firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0") pin := gpio.NewDirectPinDriver(firmataAdaptor, "13") work := func() { level := byte(1) gobot.Every(1*time.Second, func() { pin.DigitalWrite(level) if level == 1 { level = 0 } else { level = 1 } }) } robot := gobot.NewRobot("pinBot", []gobot.Connection{firmataAdaptor}, []gobot.Device{pin}, work, ) robot.Start() }
func main() { firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0") sensor := gpio.NewPIRMotionDriver(firmataAdaptor, "5") led := gpio.NewLedDriver(firmataAdaptor, "13") work := func() { sensor.On(gpio.MotionDetected, func(data interface{}) { fmt.Println(gpio.MotionDetected) led.On() }) sensor.On(gpio.MotionStopped, func(data interface{}) { fmt.Println(gpio.MotionStopped) led.Off() }) } robot := gobot.NewRobot("motionBot", []gobot.Connection{firmataAdaptor}, []gobot.Device{sensor, led}, work, ) robot.Start() }
func main() { robot := gobot.NewRobot( func() { gobot.Every(500*time.Millisecond, func() { fmt.Println("Greetings human") }) }, ) robot.Start() }