hybridgroup.gobot/platforms/joystick/README.md

195 lines
3.9 KiB
Markdown
Raw Normal View History

2014-06-10 10:01:53 +08:00
# Joystick
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-11-29 07:34:42 +08:00
## How to Install
2014-06-10 10:01:53 +08:00
This package requires `sdl2` to be installed on your system
2014-06-10 10:01:53 +08:00
### OSX
2014-06-10 10:01:53 +08:00
To install `sdl2` on OSX using Homebrew:
```
$ brew install sdl2
```
### 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
```
go get -d -u gobot.io/x/gobot/...
```
2014-06-10 10:01:53 +08:00
2014-11-29 07:34:42 +08:00
## How to Use
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
```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.
For the Dualshock4, you must pair the device with your computers Bluetooth interface first, before running your Gobot program.
## Examples
2014-11-29 07:34:42 +08:00
This small program receives joystick and button press events from an PlayStation 3 game controller.
```go
package main
import (
2014-07-11 08:02:00 +08:00
"fmt"
"gobot.io/x/gobot"
"gobot.io/x/gobot/platforms/joystick"
)
func main() {
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,
)
robot.Start()
}
```