joystick

package
v0.0.0-...-dd86721 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 1, 2015 License: Apache-2.0, Apache-2.0 Imports: 7 Imported by: 0

README

Joystick

You can use Gobot with a Dualshock3 game controller, an XBox360 game controller, or any other USB joystick or game controller that is compatible with Simple DirectMedia Layer.

How to Install

This package requires sdl2 to be installed on your system

OSX

To install sdl2 on OSX using Homebrew:

$ brew install sdl2
Ubuntu
$ sudo apt-get install libsdl2-2.0-0

Now you can install the package with

go get github.com/hybridgroup/gobot && go install github.com/hybridgroup/gobot/platforms/joystick

How to Use

Controller configurations are stored in JSON format. Here's an example configuration file for the Dualshock 3 controller

{
    "name": "Sony PLAYSTATION(R)3 Controller",
    "guid": "030000004c0500006802000011010000",
    "axis": [
        {
            "name": "left_x",
            "id": 0
        },
        {
            "name": "left_y",
            "id": 1
        },
        {
            "name": "right_x",
            "id": 2
        },
        {
            "name": "right_y",
            "id": 3
        }
    ],
    "buttons": [
        {
            "name": "square",
            "id": 15
        },
        {
            "name": "triangle",
            "id": 12
        },
        {
            "name": "circle",
            "id": 13
        },
        {
            "name": "x",
            "id": 14
        },
        {
            "name": "up",
            "id": 4
        },
        {
            "name": "down",
            "id": 6
        },
        {
            "name": "left",
            "id": 7
        },
        {
            "name": "right",
            "id": 5
        },
        {
            "name": "left_stick",
            "id": 1
        },
        {
            "name": "right_stick",
            "id": 2
        },
        {
            "name": "l1",
            "id": 10
        },
        {
            "name": "l2",
            "id": 8
        },
        {
            "name": "r1",
            "id": 11
        },
        {
            "name": "r2",
            "id": 9
        },
        {
            "name": "start",
            "id": 3
        },
        {
            "name": "select",
            "id": 0
        },
        {
            "name": "home",
            "id": 16
        }
    ]
}

How to Connect

Plug your USB joystick or game controller into your USB port. If your device is supported by SDL, you are now ready.

Examples

This small program receives joystick and button press events from an PlayStation 3 game controller.

package main

import (
	"fmt"

	"github.com/hybridgroup/gobot"
	"github.com/hybridgroup/gobot/platforms/joystick"
)

func main() {
	gbot := gobot.NewGobot()

	joystickAdaptor := joystick.NewJoystickAdaptor("ps3")
	joystick := joystick.NewJoystickDriver(joystickAdaptor,
		"ps3",
		"./platforms/joystick/configs/dualshock3.json",
	)

	work := func() {
		gobot.On(joystick.Event("square_press"), func(data interface{}) {
			fmt.Println("square_press")
		})
		gobot.On(joystick.Event("square_release"), func(data interface{}) {
			fmt.Println("square_release")
		})
		gobot.On(joystick.Event("triangle_press"), func(data interface{}) {
			fmt.Println("triangle_press")
		})
		gobot.On(joystick.Event("triangle_release"), func(data interface{}) {
			fmt.Println("triangle_release")
		})
		gobot.On(joystick.Event("left_x"), func(data interface{}) {
			fmt.Println("left_x", data)
		})
		gobot.On(joystick.Event("left_y"), func(data interface{}) {
			fmt.Println("left_y", data)
		})
		gobot.On(joystick.Event("right_x"), func(data interface{}) {
			fmt.Println("right_x", data)
		})
		gobot.On(joystick.Event("right_y"), func(data interface{}) {
			fmt.Println("right_y", data)
		})
	}

	robot := gobot.NewRobot("joystickBot",
		[]gobot.Connection{joystickAdaptor},
		[]gobot.Device{joystick},
		work,
	)

	gbot.AddRobot(robot)

	gbot.Start()
}

Documentation

Overview

Package joystick provides the Gobot adaptor and drivers for game controllers that are compatible with SDL.

Installing:

This package requires `sdl2` to be installed on your system Then install package with:

go get github.com/hybridgroup/gobot/platforms/joystick

Example:

package main

import (
	"fmt"

	"github.com/hybridgroup/gobot"
	"github.com/hybridgroup/gobot/platforms/joystick"
)

func main() {
	gbot := gobot.NewGobot()

	joystickAdaptor := joystick.NewJoystickAdaptor("ps3")
	joystick := joystick.NewJoystickDriver(joystickAdaptor,
		"ps3",
		"./platforms/joystick/configs/dualshock3.json",
	)

	work := func() {
		gobot.On(joystick.Event("square_press"), func(data interface{}) {
			fmt.Println("square_press")
		})
		gobot.On(joystick.Event("square_release"), func(data interface{}) {
			fmt.Println("square_release")
		})
		gobot.On(joystick.Event("triangle_press"), func(data interface{}) {
			fmt.Println("triangle_press")
		})
		gobot.On(joystick.Event("triangle_release"), func(data interface{}) {
			fmt.Println("triangle_release")
		})
		gobot.On(joystick.Event("left_x"), func(data interface{}) {
			fmt.Println("left_x", data)
		})
		gobot.On(joystick.Event("left_y"), func(data interface{}) {
			fmt.Println("left_y", data)
		})
		gobot.On(joystick.Event("right_x"), func(data interface{}) {
			fmt.Println("right_x", data)
		})
		gobot.On(joystick.Event("right_y"), func(data interface{}) {
			fmt.Println("right_y", data)
		})
	}

	robot := gobot.NewRobot("joystickBot",
		[]gobot.Connection{joystickAdaptor},
		[]gobot.Device{joystick},
		work,
	)

	gbot.AddRobot(robot)

	gbot.Start()
}

For further information refer to joystick README: https://github.com/hybridgroup/gobot/blob/master/platforms/joystick/README.md

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type JoystickAdaptor

type JoystickAdaptor struct {
	// contains filtered or unexported fields
}

func NewJoystickAdaptor

func NewJoystickAdaptor(name string) *JoystickAdaptor

NewJoysctickAdaptor creates a new adaptor with specified name. It creates a connect function to joystick in position 0 or panics if no joystick can be found

func (*JoystickAdaptor) Connect

func (j *JoystickAdaptor) Connect() (errs []error)

Connect returns true if connection to device is succesfull

func (*JoystickAdaptor) Finalize

func (j *JoystickAdaptor) Finalize() (errs []error)

Finalize closes connection to device

func (*JoystickAdaptor) Name

func (j *JoystickAdaptor) Name() string

type JoystickDriver

type JoystickDriver struct {
	gobot.Eventer
	// contains filtered or unexported fields
}

func NewJoystickDriver

func NewJoystickDriver(a *JoystickAdaptor, name string, config string, v ...time.Duration) *JoystickDriver

NewJoystickDriver creates a joyscript driver by name.

It adds the following events:

(button)_press - triggered when (button) is pressed
(button)_release - triggered when (button) is released

func (*JoystickDriver) Connection

func (j *JoystickDriver) Connection() gobot.Connection

func (*JoystickDriver) Halt

func (j *JoystickDriver) Halt() (errs []error)

Halt stops joystick driver

func (*JoystickDriver) Name

func (j *JoystickDriver) Name() string

func (*JoystickDriver) Start

func (j *JoystickDriver) Start() (errs []error)

Start initiallizes event polling with defined interval

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL