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() { robot := gobot.NewRobot( "hello", func() { done := gobot.Every(750*time.Millisecond, func() { fmt.Println("Greetings human") }) gobot.After(5*time.Second, func() { done.Stop() fmt.Println("We're done here") }) }, ) robot.Start() }
func main() { bleAdaptor := ble.NewClientAdaptor(os.Args[1]) drone := minidrone.NewDriver(bleAdaptor) work := func() { drone.On(minidrone.Battery, func(data interface{}) { fmt.Printf("battery: %d\n", data) }) drone.On(minidrone.FlightStatus, func(data interface{}) { fmt.Printf("flight status: %d\n", data) }) drone.On(minidrone.Takeoff, func(data interface{}) { fmt.Println("taking off...") }) drone.On(minidrone.Hovering, func(data interface{}) { fmt.Println("hovering!") gobot.After(5*time.Second, func() { drone.Land() }) }) drone.On(minidrone.Landing, func(data interface{}) { fmt.Println("landing...") }) drone.On(minidrone.Landed, func(data interface{}) { fmt.Println("landed.") }) time.Sleep(1000 * time.Millisecond) drone.TakeOff() } robot := gobot.NewRobot("minidrone", []gobot.Connection{bleAdaptor}, []gobot.Device{drone}, work, ) robot.Start() }
func main() { bleAdaptor := ble.NewClientAdaptor(os.Args[1]) drone := minidrone.NewDriver(bleAdaptor) work := func() { drone.TakeOff() gobot.After(5*time.Second, func() { drone.Land() }) } robot := gobot.NewRobot("minidrone", []gobot.Connection{bleAdaptor}, []gobot.Device{drone}, work, ) robot.Start() }
func main() { ardroneAdaptor := ardrone.NewAdaptor() drone := ardrone.NewDriver(ardroneAdaptor) work := func() { drone.On(ardrone.Flying, func(data interface{}) { gobot.After(3*time.Second, func() { drone.Land() }) }) drone.TakeOff() } robot := gobot.NewRobot("drone", []gobot.Connection{ardroneAdaptor}, []gobot.Device{drone}, work, ) robot.Start() }
func main() { bebopAdaptor := bebop.NewAdaptor() drone := bebop.NewDriver(bebopAdaptor) work := func() { drone.On(bebop.Flying, func(data interface{}) { gobot.After(10*time.Second, func() { drone.Land() }) }) drone.HullProtection(true) drone.TakeOff() } robot := gobot.NewRobot("drone", []gobot.Connection{bebopAdaptor}, []gobot.Device{drone}, work, ) robot.Start() }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) _, currentfile, _, _ := runtime.Caller(0) cascade := path.Join(path.Dir(currentfile), "haarcascade_frontalface_alt.xml") window := opencv.NewWindowDriver() camera := opencv.NewCameraDriver("tcp://192.168.1.1:5555") ardroneAdaptor := ardrone.NewAdaptor() drone := ardrone.NewDriver(ardroneAdaptor) work := func() { detect := false drone.TakeOff() var image *cv.IplImage camera.On(opencv.Frame, func(data interface{}) { image = data.(*cv.IplImage) if !detect { window.ShowImage(image) } }) drone.On(ardrone.Flying, func(data interface{}) { gobot.After(1*time.Second, func() { drone.Up(0.2) }) gobot.After(2*time.Second, func() { drone.Hover() }) gobot.After(5*time.Second, func() { detect = true gobot.Every(300*time.Millisecond, func() { drone.Hover() i := image faces := opencv.DetectFaces(cascade, i) biggest := 0 var face *cv.Rect for _, f := range faces { if f.Width() > biggest { biggest = f.Width() face = f } } if face != nil { opencv.DrawRectangles(i, []*cv.Rect{face}, 0, 255, 0, 5) centerX := float64(image.Width()) * 0.5 turn := -(float64(face.X()) - centerX) / centerX fmt.Println("turning:", turn) if turn < 0 { drone.Clockwise(math.Abs(turn * 0.4)) } else { drone.CounterClockwise(math.Abs(turn * 0.4)) } } window.ShowImage(i) }) gobot.After(20*time.Second, func() { drone.Land() }) }) }) } robot := gobot.NewRobot("face", []gobot.Connection{ardroneAdaptor}, []gobot.Device{window, camera, drone}, work, ) robot.Start() }
func ExampleAfter() { gobot.After(1*time.Second, func() { fmt.Println("Hello") }) }