PlayStationコントローラ「DUALSHOCK2」をWindowsパソコンに接続して、node.jsを用いて、PlayStationコントローラ「DUALSHOCK2」(「Hid入力データダンプソフト」で使用)で入力したデータをobniz Board 1Yに表示します。
obniz Board 1Y
obniz Board 1YはESP32をメインプロセッサとし、obniz Cloudによりプログラムの書き換えやデバイスの管理ができます。
- 12個あるIOは、プログラムを用いてインタフェース機能(I2C,PWM等)が設定でき、モーターやセンサーを直に接続できます。
- JavaScript/Node.jsでプログラミングができます。
- USB Cケーブルで電源を取り、Arduino IDEによる単独での開発はできない。
ライブラリのインストール
ゲームパッドを制御するライブラリを次のコマンドでインストールします。詳細については「carldanley/node-gamepad」を参照してください。
npm install node-gamepad
obnizを次のコマンドでインストールします。詳細については「Node.jsで動かすには」を参照してください。
npm install obniz
Hidデータ表示アプリの作成
Hidデータ表示アプリ「gamepad」は次のように作成します。アプリの開発はVisual Studio codeを使用しました。
- 2行目でPlayStationコントローラ「DUALSHOCK2」の入力定義を呼び出します。
- 3行目と4行目でPlayStationコントローラ「DUALSHOCK2」のベンダーIDとプロダクトIDを設定します。
- Buttonsは12-66行目に示すイベントにより受け取り、Joysticksは67-76行目に示すイベントにより受け取ります。
- 6行目でインストールしたobniz.jsを取り込み、9行目でobniz Board 1Yに接続します。
- 13行目でobniz Board 1Yの液晶画面をクリアし、14行目でボタン名称を書き込みます。
gamepad
var GamePad = require('node-gamepad');
var controller = new GamePad('ps3/dualshock3', {
vendorID: 0x054C,
productID: 0x0268
});
var Obniz = require("obniz");
var obniz = new Obniz("1234-5678");
controller.connect();
controller.on('L1:press', function () {
obniz.display.clear();
obniz.display.print("L1");
console.log('L1');
});
controller.on('L2:press', function () {
obniz.display.clear();
obniz.display.print("L2");
console.log('L2');
});
controller.on('R2:press', function () {
obniz.display.clear();
obniz.display.print("R2");
console.log('R2');
});
controller.on('R1:press', function () {
obniz.display.clear();
obniz.display.print("R1");
console.log('R1');
});
controller.on('triangle:press', function () {
obniz.display.clear();
obniz.display.print("triangle");
console.log('triangle');
});
controller.on('square:press', function () {
obniz.display.clear();
obniz.display.print("square");
console.log('square');
});
controller.on('circle:press', function () {
obniz.display.clear();
obniz.display.print("circle");
console.log('circle');
});
controller.on('cross:press', function () {
obniz.display.clear();
obniz.display.print("cross");
console.log('cross');
});
controller.on('select:press', function () {
obniz.display.clear();
obniz.display.print("select");
console.log('select');
});
controller.on('analog:press', function () {
obniz.display.clear();
obniz.display.print("analog");
console.log('analog');
});
controller.on('start:press', function () {
obniz.display.clear();
obniz.display.print("start");
console.log('start');
});
controller.on('left:move', function (stick) {
obniz.display.clear();
obniz.display.print("left\n" + stick.x + " " + stick.y);
console.log('left', stick);
});
controller.on('right:move', function (stick) {
obniz.display.clear();
obniz.display.print("right\n" + stick.x + " " + stick.y);
console.log('right', stick);
});
obniz.onconnect = async function () {
}
json形式で定義されたPlayStationコントローラ「DUALSHOCK2」の入力定義を次に示します。
- Joysticksは4-23行目で定義し、Buttonsは25-81行目で定義します。
ps3/dualshock3
{
"vendorID": 1356,
"productID": 616,
"joysticks": [
{
"name": "left",
"x": {
"pin": 6
},
"y": {
"pin": 7
}
},
{
"name": "right",
"x": {
"pin": 8
},
"y": {
"pin": 9
}
}
],
"buttons": [
{
"name": "L1",
"pin": 2,
"value": 16
},
{
"name": "L2",
"pin": 2,
"value": 64
},
{
"name": "R2",
"pin": 2,
"value": 128
},
{
"name": "R1",
"pin": 2,
"value": 32
},
{
"name": "triangle",
"pin": 2,
"value": 1
},
{
"name": "square",
"pin": 2,
"value": 8
},
{
"name": "circle",
"pin": 2,
"value": 2
},
{
"name": "cross",
"pin": 2,
"value": 4
},
{
"name": "select",
"pin": 3,
"value": 1
},
{
"name": "analog",
"pin": 3,
"value": 16
},
{
"name": "start",
"pin": 3,
"value": 2
}
],
"status": [
{
"name": "charging",
"pin": 29,
"states": [
{
"value": 0,
"state": "charging"
},
{
"value": 2,
"state": "charging"
},
{
"value": 3,
"state": "not charging"
}
]
},
{
"name": "battery",
"pin": 30,
"states": [
{
"value": 238,
"state": "Charging"
},
{
"value": 0,
"state": "No charge"
},
{
"value": 1,
"state": "20%"
},
{
"value": 2,
"state": "40%"
},
{
"value": 3,
"state": "60%"
},
{
"value": 4,
"state": "80%"
},
{
"value": 5,
"state": "100%"
}
]
},
{
"name": "connection",
"pin": 31,
"states": [
{
"value": 18,
"state": "usb"
},
{
"value": 22,
"state": "bluetooth"
},
{
"value": 20,
"state": "rumbling"
}
]
}
]
}
Hidデータ表示アプリの実行
Hidデータ表示アプリ「gamepad」を実行すると、PlayStationコントローラ「DUALSHOCK2」の対応するボタン名称が、Visual Studio codeの実行画面に次のように表示されます。
PlayStationコントローラ「DUALSHOCK2」の対応するボタン名称が、obniz Board 1Yの液晶画面に次のように表示されます。
PlayStationコントローラ「DUALSHOCK2」の定義したボタン名称を次に示します。



