ESP32にPS3コントローラをBT接続 ― 2020年11月12日 01:04
ESP32にPS3コントローラをBT接続してみる。
以下のスケッチを実行するとESP32のMACアドレスが表示されるので、PCにPS3コントローラをUSB接続し、前の記事でビルドしたsixaxispairerにESP32のMACアドレスを指定してペアリングする。
PS3コントローラのUSBを抜いて、PSボタンを押すとESP32に接続する。ちゃんとイベントが発生するか、□△○×ボタンを押して確認する。
/*******************************************************************************
デバグ用マクロ
*******************************************************************************/
// DEBUGマクロを定義するとデバグ情報をシリアルポートへ出力する
#define DEBUG
#if defined(DEBUG)
#define DSTART() Serial.begin(115200)
#define DPRINTF(...) Serial.printf(__VA_ARGS__)
#else
#define DSTART()
#define DPRINTF(...)
#endif
/*******************************************************************************
使用ライブラリのヘッダファイル
*******************************************************************************/
#include <Ps3Controller.h>
/*******************************************************************************
PS3コントローライベントハンドラ
*******************************************************************************/
void notify()
{
// □ボタンプレス/リリース
if (Ps3.event.button_down.square) DPRINTF("□ button down\n");
if (Ps3.event.button_up.square) DPRINTF("□ button release\n");
// △ボタンプレス/リリース
if (Ps3.event.button_down.triangle) DPRINTF("△ button down\n");
if (Ps3.event.button_up.triangle) DPRINTF("△ button release\n");
// ○ボタンプレス/リリース
if (Ps3.event.button_down.circle) DPRINTF("○ button down\n");
if (Ps3.event.button_up.circle) DPRINTF("○ button release\n");
// ☓ボタンプレス/リリース
if (Ps3.event.button_down.cross) DPRINTF("☓ button down\n");
if (Ps3.event.button_up.cross) DPRINTF("☓ button release\n");
}
/*******************************************************************************
PS3コントローラ接続完了イベント
*******************************************************************************/
void onConnect()
{
DPRINTF("Connected!\n");
}
/*******************************************************************************
PS3コントローラ接続
*******************************************************************************/
void connect_controller()
{
// ESP32のMACアドレス(バイナリ、文字列)
uint8_t btmac[6];
char btmac_str[20];
// PS3コントローラを接続する
Ps3.attach(notify);
Ps3.attachOnConnect(onConnect);
esp_read_mac(btmac, ESP_MAC_BT);
sprintf(btmac_str, "%02x:%02x:%02x:%02x:%02x:%02x",
btmac[0], btmac[1], btmac[2], btmac[3], btmac[4], btmac[5]);
DPRINTF("MAC: %s\n", btmac_str);
Ps3.begin(btmac_str);
DPRINTF("Ready...\n");
}
/*******************************************************************************
セットアップ
*******************************************************************************/
void setup()
{
// デバグ情報を有効化する
DSTART();
// PS3コントローラを接続する
connect_controller();
}
/*******************************************************************************
メインループ
*******************************************************************************/
void loop()
{
}
うまく行けば、シリアルモニタにはこんな内容が表示される。
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0018,len:4 load:0x3fff001c,len:1216 ho 0 tail 12 room 4 load:0x40078000,len:10864 load:0x40080400,len:6432 entry 0x400806b8 MAC: xx:xx:xx:xx:xx:xx Ready... Connected! □ button down □ button release △ button down △ button release ○ button down ○ button release ☓ button down ☓ button release
コメント
トラックバック
このエントリのトラックバックURL: http://shirata.asablo.jp/blog/2020/11/12/9315665/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。