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  }