README ¶
Joystick
You can use Gobot with any USB joystick or game controller that is compatible with Simple DirectMedia Layer.
Current configurations included:
- Dualshock3 game controller
- Dualshock4 game controller
- XBox360 game controller
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 -d -u gobot.io/x/gobot/... && go install gobot.io/x/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.
For the Dualshock4, you must pair the device with your computers Bluetooth interface first, before running your Gobot program.
Examples
This small program receives joystick and button press events from an PlayStation 3 game controller.
package main
import (
"fmt"
"gobot.io/x/gobot"
"gobot.io/x/gobot/platforms/joystick"
)
func main() {
joystickAdaptor := joystick.NewAdaptor()
joystick := joystick.NewDriver(joystickAdaptor,
"./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,
)
robot.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 gobot.io/x/gobot/platforms/joystick
Example:
package main import ( "fmt" "gobot.io/x/gobot" "gobot.io/x/gobot/platforms/joystick" ) func main() { joystickAdaptor := joystick.NewAdaptor() joystick := joystick.NewDriver(joystickAdaptor, "./platforms/joystick/configs/dualshock3.json", ) work := func() { joystick.On(joystick.Event("square_press"), func(data interface{}) { fmt.Println("square_press") }) joystick.On(joystick.Event("square_release"), func(data interface{}) { fmt.Println("square_release") }) joystick.On(joystick.Event("triangle_press"), func(data interface{}) { fmt.Println("triangle_press") }) joystick.On(joystick.Event("triangle_release"), func(data interface{}) { fmt.Println("triangle_release") }) joystick.On(joystick.Event("left_x"), func(data interface{}) { fmt.Println("left_x", data) }) joystick.On(joystick.Event("left_y"), func(data interface{}) { fmt.Println("left_y", data) }) joystick.On(joystick.Event("right_x"), func(data interface{}) { fmt.Println("right_x", data) }) joystick.On(joystick.Event("right_y"), func(data interface{}) { fmt.Println("right_y", data) }) } robot := gobot.NewRobot("joystickBot", []gobot.Connection{joystickAdaptor}, []gobot.Device{joystick}, work, ) robot.Start() }
For further information refer to joystick README: https://github.com/hybridgroup/gobot/blob/master/platforms/joystick/README.md
Index ¶
Constants ¶
const ( // left X joystick event LeftX = "left_x" // left Y joystick event LeftY = "left_y" // right X joystick event RightX = "right_x" // right Y joystick event RightY = "right_y" // L1 button joystick event L1 = "l1" // L2 joystick event L2 = "l2" // R1 button joystick event R1 = "r1" // R2 joystick event R2 = "r2" // up gamepad event Up = "up" // down gamepad event Down = "down" // left gamepad event Left = "left" // right gamepad event Right = "right" // square button press event SquarePress = "square_press" // square button release event SquareRelease = "square_release" // circle button press event CirclePress = "circle_press" // circle button release event CircleRelease = "circle_release" // triangle button press event TrianglePress = "triangle_press" // triangle button release event TriangleRelease = "triangle_release" // X button press event XPress = "x_press" // X button release event XRelease = "x_release" SharePress = "share_press" ShareRelease = "share_release" // options button press event OptionsPress = "options_press" // options button release event OptionsRelease = "options_release" // home button press event HomePress = "home_press" // home button release event HomeRelease = "home_release" // start button press event StartPress = "start_press" // start button release event StartRelease = "start_release" // rt button press event RTPress = "rt_press" // rt button release event RTRelease = "rt_release" // lt button press event LTPress = "lt_press" // lt button release event LTRelease = "lt_release" // Y button press event YPress = "y_press" // Y button release event YRelease = "y_release" // A button press event APress = "a_press" // A button release event ARelease = "a_release" // B button press event BPress = "b_press" // B button release event BRelease = "b_release" // rb button press event RBPress = "rb_press" // rb button release event RBRelease = "rb_release" // lb button press event LBPress = "lb_press" // lb button release event LBRelease = "lb_release" // back button press event BackPress = "back_press" // back button release event BackRelease = "back_release" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Adaptor ¶ added in v1.0.0
type Adaptor struct {
// contains filtered or unexported fields
}
Adaptor represents a connection to a joystick
func NewAdaptor ¶ added in v1.0.0
func NewAdaptor() *Adaptor
NewAdaptor returns a new Joystick Adaptor.
type Driver ¶ added in v1.0.0
Driver represents a joystick
func NewDriver ¶ added in v1.0.0
NewDriver returns a new Driver with a polling interval of 10 Milliseconds given a Joystick Adaptor and json button configuration file location.
Optionally accepts:
time.Duration: Interval at which the Driver is polled for new information
func (*Driver) Connection ¶ added in v1.0.0
func (j *Driver) Connection() gobot.Connection
Connection returns the Drivers connection