3.9 KiB
3.9 KiB
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()
}