func main() { bleAdaptor := ble.NewClientAdaptor(os.Args[1]) access := ble.NewGenericAccessDriver(bleAdaptor) work := func() { fmt.Println("Device name:", access.GetDeviceName()) fmt.Println("Appearance:", access.GetAppearance()) } robot := gobot.NewRobot("bleBot", []gobot.Connection{bleAdaptor}, []gobot.Device{access}, work, ) robot.Start() }
func main() { bleAdaptor := ble.NewClientAdaptor(os.Args[1]) battery := ble.NewBatteryDriver(bleAdaptor) work := func() { gobot.Every(5*time.Second, func() { fmt.Println("Battery level:", battery.GetBatteryLevel()) }) } robot := gobot.NewRobot("bleBot", []gobot.Connection{bleAdaptor}, []gobot.Device{battery}, work, ) 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]) ollie := ollie.NewDriver(bleAdaptor) work := func() { ollie.SetRGB(255, 0, 255) gobot.Every(3*time.Second, func() { ollie.Roll(40, uint16(gobot.Rand(360))) }) } robot := gobot.NewRobot("ollieBot", []gobot.Connection{bleAdaptor}, []gobot.Device{ollie}, work, ) robot.Start() }
func main() { bleAdaptor := ble.NewClientAdaptor(os.Args[1]) info := ble.NewDeviceInformationDriver(bleAdaptor) work := func() { fmt.Println("Model number:", info.GetModelNumber()) fmt.Println("Firmware rev:", info.GetFirmwareRevision()) fmt.Println("Hardware rev:", info.GetHardwareRevision()) fmt.Println("Manufacturer name:", info.GetManufacturerName()) fmt.Println("PnPId:", info.GetPnPId()) } robot := gobot.NewRobot("bleBot", []gobot.Connection{bleAdaptor}, []gobot.Device{info}, 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() { bleAdaptor := ble.NewClientAdaptor(os.Args[1]) bb8 := bb8.NewDriver(bleAdaptor) work := func() { gobot.Every(1*time.Second, func() { r := uint8(gobot.Rand(255)) g := uint8(gobot.Rand(255)) b := uint8(gobot.Rand(255)) bb8.SetRGB(r, g, b) }) } robot := gobot.NewRobot("bbBot", []gobot.Connection{bleAdaptor}, []gobot.Device{bb8}, work, ) robot.Start() }
func initTestMinidroneDriver() *Driver { d := NewDriver(ble.NewClientAdaptor("D7:99:5A:26:EC:38")) return d }
func initTestBB8Driver() *BB8Driver { d := NewDriver(ble.NewClientAdaptor("D7:99:5A:26:EC:38")) return d }
func main() { joystickAdaptor := joystick.NewAdaptor() stick := joystick.NewDriver(joystickAdaptor, "./platforms/joystick/configs/dualshock3.json", ) droneAdaptor := ble.NewClientAdaptor(os.Args[1]) drone := minidrone.NewDriver(droneAdaptor) work := func() { offset := 32767.0 rightStick := pair{x: 0, y: 0} leftStick := pair{x: 0, y: 0} recording := false stick.On(joystick.CirclePress, func(data interface{}) { if recording { drone.StopRecording() } else { drone.StartRecording() } recording = !recording }) stick.On(joystick.SquarePress, func(data interface{}) { drone.HullProtection(true) drone.TakeOff() }) stick.On(joystick.TrianglePress, func(data interface{}) { drone.Stop() }) stick.On(joystick.XPress, func(data interface{}) { drone.Land() }) stick.On(joystick.LeftX, func(data interface{}) { val := float64(data.(int16)) if leftStick.x != val { leftStick.x = val } }) stick.On(joystick.LeftY, func(data interface{}) { val := float64(data.(int16)) if leftStick.y != val { leftStick.y = val } }) stick.On(joystick.RightX, func(data interface{}) { val := float64(data.(int16)) if rightStick.x != val { rightStick.x = val } }) stick.On(joystick.RightY, func(data interface{}) { val := float64(data.(int16)) if rightStick.y != val { rightStick.y = val } }) gobot.Every(10*time.Millisecond, func() { pair := leftStick if pair.y < -10 { drone.Forward(validatePitch(pair.y, offset)) } else if pair.y > 10 { drone.Backward(validatePitch(pair.y, offset)) } else { drone.Forward(0) } if pair.x > 10 { drone.Right(validatePitch(pair.x, offset)) } else if pair.x < -10 { drone.Left(validatePitch(pair.x, offset)) } else { drone.Right(0) } }) gobot.Every(10*time.Millisecond, func() { pair := rightStick if pair.y < -10 { drone.Up(validatePitch(pair.y, offset)) } else if pair.y > 10 { drone.Down(validatePitch(pair.y, offset)) } else { drone.Up(0) } if pair.x > 20 { drone.Clockwise(validatePitch(pair.x, offset)) } else if pair.x < -20 { drone.CounterClockwise(validatePitch(pair.x, offset)) } else { drone.Clockwise(0) } }) } robot := gobot.NewRobot("minidrone", []gobot.Connection{joystickAdaptor, droneAdaptor}, []gobot.Device{stick, drone}, work, ) robot.Start() }