gobot.io/x/gobot@v1.16.0/examples/minidrone_events.go (about) 1 // +build example 2 // 3 // Do not build by default. 4 5 /* 6 How to run 7 Pass the Bluetooth name or address as first param: 8 9 go run examples/minidrone_events.go "Mambo_1234" 10 11 NOTE: sudo is required to use BLE in Linux 12 */ 13 14 package main 15 16 import ( 17 "fmt" 18 "os" 19 "time" 20 21 "gobot.io/x/gobot" 22 "gobot.io/x/gobot/platforms/ble" 23 "gobot.io/x/gobot/platforms/parrot/minidrone" 24 ) 25 26 func main() { 27 bleAdaptor := ble.NewClientAdaptor(os.Args[1]) 28 drone := minidrone.NewDriver(bleAdaptor) 29 30 work := func() { 31 drone.On(minidrone.Battery, func(data interface{}) { 32 fmt.Printf("battery: %d\n", data) 33 }) 34 35 drone.On(minidrone.FlightStatus, func(data interface{}) { 36 fmt.Printf("flight status: %d\n", data) 37 }) 38 39 drone.On(minidrone.Takeoff, func(data interface{}) { 40 fmt.Println("taking off...") 41 }) 42 43 drone.On(minidrone.Hovering, func(data interface{}) { 44 fmt.Println("hovering!") 45 gobot.After(5*time.Second, func() { 46 drone.Land() 47 }) 48 }) 49 50 drone.On(minidrone.Landing, func(data interface{}) { 51 fmt.Println("landing...") 52 }) 53 54 drone.On(minidrone.Landed, func(data interface{}) { 55 fmt.Println("landed.") 56 }) 57 58 time.Sleep(1000 * time.Millisecond) 59 drone.TakeOff() 60 } 61 62 robot := gobot.NewRobot("minidrone", 63 []gobot.Connection{bleAdaptor}, 64 []gobot.Device{drone}, 65 work, 66 ) 67 68 robot.Start() 69 }