2014-06-10 10:01:53 +08:00
|
|
|
# Joystick
|
2014-04-26 18:11:51 +08:00
|
|
|
|
2016-02-21 01:41:19 +08:00
|
|
|
You can use Gobot with any USB joystick or game controller that is compatible with [Simple DirectMedia Layer](http://www.libsdl.org/).
|
|
|
|
|
|
|
|
Current configurations included:
|
|
|
|
- Dualshock3 game controller
|
|
|
|
- Dualshock4 game controller
|
|
|
|
- XBox360 game controller
|
2014-04-26 18:11:51 +08:00
|
|
|
|
2014-11-29 07:34:42 +08:00
|
|
|
## How to Install
|
2014-04-26 18:11:51 +08:00
|
|
|
|
2014-06-10 10:01:53 +08:00
|
|
|
This package requires `sdl2` to be installed on your system
|
2014-04-26 18:11:51 +08:00
|
|
|
|
2014-06-10 10:01:53 +08:00
|
|
|
### OSX
|
2014-04-26 18:11:51 +08:00
|
|
|
|
2014-06-10 10:01:53 +08:00
|
|
|
To install `sdl2` on OSX using Homebrew:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ brew install sdl2
|
|
|
|
```
|
2014-04-26 18:11:51 +08:00
|
|
|
|
|
|
|
### Ubuntu
|
|
|
|
|
|
|
|
```
|
|
|
|
$ sudo apt-get install libsdl2-2.0-0
|
|
|
|
```
|
|
|
|
|
2014-07-07 03:17:10 +08:00
|
|
|
Now you can install the package with
|
2014-11-29 07:34:42 +08:00
|
|
|
|
2014-04-26 18:11:51 +08:00
|
|
|
```
|
2017-06-10 18:59:19 +08:00
|
|
|
go get -d -u gobot.io/x/gobot/...
|
2014-04-26 18:11:51 +08:00
|
|
|
```
|
2014-06-10 10:01:53 +08:00
|
|
|
|
2014-11-29 07:34:42 +08:00
|
|
|
## How to Use
|
2014-04-26 18:11:51 +08:00
|
|
|
|
|
|
|
Controller configurations are stored in JSON format. Here's an example configuration file for the Dualshock 3 controller
|
2014-11-29 07:34:42 +08:00
|
|
|
|
2014-04-26 18:11:51 +08:00
|
|
|
```json
|
|
|
|
{
|
|
|
|
"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
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2014-11-29 07:34:42 +08:00
|
|
|
## 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.
|
|
|
|
|
2016-02-21 01:41:19 +08:00
|
|
|
For the Dualshock4, you must pair the device with your computers Bluetooth interface first, before running your Gobot program.
|
|
|
|
|
2014-04-26 18:11:51 +08:00
|
|
|
## Examples
|
2014-11-29 07:34:42 +08:00
|
|
|
|
|
|
|
This small program receives joystick and button press events from an PlayStation 3 game controller.
|
|
|
|
|
2014-04-26 18:11:51 +08:00
|
|
|
```go
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2014-07-11 08:02:00 +08:00
|
|
|
"fmt"
|
|
|
|
|
2016-12-08 20:24:03 +08:00
|
|
|
"gobot.io/x/gobot"
|
|
|
|
"gobot.io/x/gobot/platforms/joystick"
|
2014-04-26 18:11:51 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
2016-09-26 03:07:36 +08:00
|
|
|
joystickAdaptor := joystick.NewAdaptor()
|
|
|
|
joystick := joystick.NewDriver(joystickAdaptor,
|
2014-07-11 08:02:00 +08:00
|
|
|
"./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,
|
|
|
|
)
|
|
|
|
|
2016-10-19 03:37:10 +08:00
|
|
|
robot.Start()
|
2014-04-26 18:11:51 +08:00
|
|
|
}
|
2016-02-21 01:41:19 +08:00
|
|
|
```
|