func main() { gbot := gobot.NewGobot() firmataAdaptor := firmata.NewFirmataAdaptor("firmata", "/dev/ttyACM0") servo1 := gpio.NewServoDriver(firmataAdaptor, "servo", "5") servo2 := gpio.NewServoDriver(firmataAdaptor, "servo", "3") leapAdaptor := leap.NewLeapMotionAdaptor("leap", "127.0.0.1:6437") leapDriver := leap.NewLeapMotionDriver(leapAdaptor, "leap") work := func() { x := 90.0 z := 90.0 gobot.On(leapDriver.Events["Message"], func(data interface{}) { if len(data.(leap.Frame).Hands) > 0 { hand := data.(leap.Frame).Hands[0] x = gobot.ToScale(gobot.FromScale(hand.X(), -300, 300), 30, 150) z = gobot.ToScale(gobot.FromScale(hand.Z(), -300, 300), 30, 150) } }) gobot.Every(10*time.Millisecond, func() { servo1.Move(uint8(x)) servo2.Move(uint8(z)) fmt.Println("Current Angle: ", servo1.CurrentAngle, ",", servo2.CurrentAngle) }) } gbot.Robots = append(gbot.Robots, gobot.NewRobot("pwmBot", []gobot.Connection{firmataAdaptor, leapAdaptor}, []gobot.Device{servo1, servo2, leapDriver}, work)) gbot.Start() }
func main() { gbot := gobot.NewGobot() m := mqtt.NewMqttAdaptor("mqtt", "tcp://192.168.0.90:1883", "drone") digisparkAdaptor := digispark.NewDigisparkAdaptor("digispark") servo := gpio.NewServoDriver(digisparkAdaptor, "servo", "0") work := func() { servo.Move(10) m.On("drop", func(data []byte) { servo.Move(150) m.Publish("drone", []byte("Dropped")) }) } robot := gobot.NewRobot("servoBot", []gobot.Connection{digisparkAdaptor, m}, []gobot.Device{servo}, work, ) gbot.AddRobot(robot) gbot.Start() }
// Video: https://www.youtube.com/watch?v=ayNMyUfdAqc func main() { gbot := gobot.NewGobot() firmataAdaptor := firmata.NewFirmataAdaptor("firmata", "/dev/tty.usbmodem1451") servo1 := gpio.NewServoDriver(firmataAdaptor, "servo", "3") servo2 := gpio.NewServoDriver(firmataAdaptor, "servo", "4") servo3 := gpio.NewServoDriver(firmataAdaptor, "servo", "5") servo4 := gpio.NewServoDriver(firmataAdaptor, "servo", "6") servo5 := gpio.NewServoDriver(firmataAdaptor, "servo", "7") leapMotionAdaptor := leap.NewLeapMotionAdaptor("leap", "127.0.0.1:6437") l := leap.NewLeapMotionDriver(leapMotionAdaptor, "leap") work := func() { fist := false l.On(leap.MessageEvent, func(data interface{}) { handIsOpen := len(data.(leap.Frame).Pointables) > 0 if handIsOpen && fist { servo1.Move(0) servo2.Move(0) servo3.Move(0) servo4.Move(0) servo5.Move(0) fist = false } else if !handIsOpen && !fist { servo1.Move(120) servo2.Move(120) servo3.Move(120) servo4.Move(120) servo5.Move(120) fist = true } }) } robot := gobot.NewRobot("servoBot", []gobot.Connection{firmataAdaptor, leapMotionAdaptor}, []gobot.Device{servo1, servo2, servo3, servo4, servo5, l}, work, ) gbot.AddRobot(robot) gbot.Start() }
func New(c gobot.Connection, w gpio.ServoWriter) *Quasiped { return &Quasiped{ connection: c, joints: map[location]*joint{ location{nw, horizontal}: &joint{driver: gpio.NewServoDriver(w, "nw_h", "1")}, location{ne, horizontal}: &joint{driver: gpio.NewServoDriver(w, "ne_h", "2")}, location{sw, horizontal}: &joint{driver: gpio.NewServoDriver(w, "sw_h", "3")}, location{se, horizontal}: &joint{driver: gpio.NewServoDriver(w, "se_h", "4")}, location{nw, vertical}: &joint{driver: gpio.NewServoDriver(w, "nw_v", "5")}, location{ne, vertical}: &joint{driver: gpio.NewServoDriver(w, "ne_v", "6")}, location{sw, vertical}: &joint{driver: gpio.NewServoDriver(w, "sw_v", "7")}, location{se, vertical}: &joint{driver: gpio.NewServoDriver(w, "se_v", "8")}, }, } }
func NewMotion() *Motion { m := new(Motion) m.Robot = roc.NewRocRobot(nil) m.arduino = firmata.NewFirmataAdaptor("arduino", "/dev/ttyACM0") m.servoX = gpio.NewServoDriver(m.arduino, "servoX", "6") m.servoY = gpio.NewServoDriver(m.arduino, "servoY", "5") m.motorL = gpio.NewServoDriver(m.arduino, "motorL", "9") m.motorR = gpio.NewServoDriver(m.arduino, "motorR", "10") m.dir = 0 work := func() { m.resetCam(nil) } m.Robot.Robot = gobot.NewRobot("motion", []gobot.Connection{m.arduino}, []gobot.Device{m.servoX, m.servoY, m.motorR, m.motorL}, work) m.AddFunc(m.moveCam, CAM, nil, "moveCam") m.AddFunc(m.getCamPos, GCAM, m.getCamPosApi, "getCamAngle") m.AddFunc(m.resetCam, RCAM, m.resetCamAPI, "resetCam") m.AddFunc(m.move, MOUV, nil, "mv") m.AddEvent("move") m.resetTime = make(chan bool) go func() { t := time.NewTimer(time.Second) t.Stop() for { select { case <-t.C: m.stopMoving() case <-m.resetTime: t.Reset(time.Second) } } }() return m }
func main() { gbot := gobot.NewGobot() beagleboneAdaptor := beaglebone.NewBeagleboneAdaptor("beaglebone") servo := gpio.NewServoDriver(beagleboneAdaptor, "servo", "P9_14") work := func() { gobot.Every(1*time.Second, func() { i := uint8(gobot.Rand(180)) fmt.Println("Turning", i) servo.Move(i) }) } gbot.Robots = append(gbot.Robots, gobot.NewRobot("servoBot", []gobot.Connection{beagleboneAdaptor}, []gobot.Device{servo}, work)) gbot.Start() }
func main() { gbot := gobot.NewGobot() digisparkAdaptor := digispark.NewDigisparkAdaptor("digispark") servo := gpio.NewServoDriver(digisparkAdaptor, "servo", "0") work := func() { gobot.Every(1*time.Second, func() { i := uint8(gobot.Rand(180)) fmt.Println("Turning", i) servo.Move(i) }) } gbot.Robots = append(gbot.Robots, gobot.NewRobot("servoBot", []gobot.Connection{digisparkAdaptor}, []gobot.Device{servo}, work)) gbot.Start() }
func main() { gbot := gobot.NewGobot() firmataAdaptor := firmata.NewFirmataAdaptor("firmata", "/dev/ttyACM0") servo := gpio.NewServoDriver(firmataAdaptor, "servo", "3") work := func() { gobot.Every(1*time.Second, func() { i := uint8(gobot.Rand(180)) fmt.Println("Turning", i) servo.Move(i) }) } gbot.Robots = append(gbot.Robots, gobot.NewRobot("servoBot", []gobot.Connection{firmataAdaptor}, []gobot.Device{servo}, work)) gbot.Start() }
func main() { gbot := gobot.NewGobot() firmataAdaptor := firmata.NewFirmataAdaptor("firmata", "COM3") servo := gpio.NewServoDriver(firmataAdaptor, "servo", "9") fmt.Println("Hello Twitter, 世界") anaconda.SetConsumerKey("bsYrbbtqg9l2u2hYhgz76h6ux") anaconda.SetConsumerSecret("urcJNRZ9qZeCUQfqEoZ0e4Q5JMUmbDgn5bRtbWN0lTyhkgvkPx") api := anaconda.NewTwitterApi("3145150396-22DQi9gphmz3XX30Y6jCAmKrWvzjaldIQFybqry", "oEOcLxm8uo8V7jSm3IKNq44jcgS66zhikIbgEg4r0l4UT") stream := api.UserStream(nil) work := func() { for { channel := <-stream.C t, ok := channel.(anaconda.Tweet) if !ok { fmt.Println("Recieved non tweet message") } if strings.Contains(t.Text, "#turn") { degree := strings.Split(t.Text, "#turn")[1] x, _ := strconv.ParseUint(degree, 10, 8) fmt.Println("Turning ", x) servo.Move(uint8(x)) } } } robot := gobot.NewRobot("servoBot", []gobot.Connection{firmataAdaptor}, []gobot.Device{servo}, work, ) gbot.AddRobot(robot) gbot.Start() }