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 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() { 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() { 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() { master := gobot.NewMaster() spheros := []string{ "/dev/rfcomm0", "/dev/rfcomm1", "/dev/rfcomm2", } for _, port := range spheros { spheroAdaptor := sphero.NewAdaptor(port) cell := sphero.NewSpheroDriver(spheroAdaptor) cell.SetName("Sphero" + port) work := func() { conway := new(conway) conway.cell = cell conway.birth() cell.On(sphero.Collision, func(data interface{}) { conway.contact() }) gobot.Every(3*time.Second, func() { if conway.alive { conway.movement() } }) gobot.Every(10*time.Second, func() { if conway.alive { conway.birthday() } }) } robot := gobot.NewRobot("conway", []gobot.Connection{spheroAdaptor}, []gobot.Device{cell}, work, ) master.AddRobot(robot) } master.Start() }
func main() { master := gobot.NewMaster() 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, ) master.AddRobot(robot) } robot := gobot.NewRobot("", func() { gobot.Every(1*time.Second, func() { sphero := master.Robot("Sphero-BPO").Device("sphero").(*sphero.SpheroDriver) sphero.SetRGB(uint8(gobot.Rand(255)), uint8(gobot.Rand(255)), uint8(gobot.Rand(255)), ) }) }, ) master.AddRobot(robot) master.Start() }
func main() { master := gobot.NewMaster() a := api.NewAPI(master) a.Start() conn := sphero.NewAdaptor("/dev/rfcomm0") ball := sphero.NewSpheroDriver(conn) robot := gobot.NewRobot("sphero-dpad", []gobot.Connection{conn}, []gobot.Device{ball}, ) robot.AddCommand("move", func(params map[string]interface{}) interface{} { direction := params["direction"].(string) switch direction { case "up": ball.Roll(100, 0) case "down": ball.Roll(100, 180) case "left": ball.Roll(100, 270) case "right": ball.Roll(100, 90) } time.Sleep(2 * time.Second) ball.Stop() return "ok" }) master.AddRobot(robot) master.Start() }