gobot.io/x/gobot/v2@v2.1.0/examples/leap_servos.go (about) 1 //go:build example 2 // +build example 3 4 // 5 // Do not build by default. 6 7 package main 8 9 import ( 10 "gobot.io/x/gobot/v2" 11 "gobot.io/x/gobot/v2/drivers/gpio" 12 "gobot.io/x/gobot/v2/platforms/firmata" 13 "gobot.io/x/gobot/v2/platforms/leap" 14 ) 15 16 // Video: https://www.youtube.com/watch?v=ayNMyUfdAqc 17 func main() { 18 firmataAdaptor := firmata.NewAdaptor("/dev/tty.usbmodem1451") 19 servo1 := gpio.NewServoDriver(firmataAdaptor, "3") 20 servo2 := gpio.NewServoDriver(firmataAdaptor, "4") 21 servo3 := gpio.NewServoDriver(firmataAdaptor, "5") 22 servo4 := gpio.NewServoDriver(firmataAdaptor, "6") 23 servo5 := gpio.NewServoDriver(firmataAdaptor, "7") 24 25 leapMotionAdaptor := leap.NewAdaptor("127.0.0.1:6437") 26 l := leap.NewDriver(leapMotionAdaptor) 27 28 work := func() { 29 fist := false 30 l.On(leap.MessageEvent, func(data interface{}) { 31 handIsOpen := len(data.(leap.Frame).Pointables) > 0 32 if handIsOpen && fist { 33 servo1.Move(0) 34 servo2.Move(0) 35 servo3.Move(0) 36 servo4.Move(0) 37 servo5.Move(0) 38 fist = false 39 } else if !handIsOpen && !fist { 40 servo1.Move(120) 41 servo2.Move(120) 42 servo3.Move(120) 43 servo4.Move(120) 44 servo5.Move(120) 45 fist = true 46 } 47 }) 48 } 49 50 robot := gobot.NewRobot("servoBot", 51 []gobot.Connection{firmataAdaptor, leapMotionAdaptor}, 52 []gobot.Device{servo1, servo2, servo3, servo4, servo5, l}, 53 work, 54 ) 55 56 robot.Start() 57 }