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