示例#1
0
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()
}
示例#3
0
// 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()
}
示例#4
0
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
}
示例#6
0
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()
}
示例#7
0
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()
}
示例#8
0
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()
}
示例#9
0
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()
}