AtomMatrixでPS4コントローラを接続してみました。
まずはAtom MatrixのMACアドレスを調べます。
#include <WiFi.h> void setup() { Serial.begin(115200); delay(2000); WiFi.mode(WIFI_STA); Serial.print("MAC: "); Serial.println(WiFi.macAddress()); } void loop() {}
書き込んで、USBケーブルを一度差しなおすとシリアルモニタに表示されるのですが、なぜか全て「0」が表示されました。
chatGPTに聞いたところ、ESP32のバージョンを落とせと言われたので、バージョン3.3.5→2.0.17にダウングレードしました。
ダウングレード後はボードの再設定をしてスケッチを書き込んだところ、MACアドレスが表示されました。
PS4との接続
SixaxisPairToolというフリーソフトを作業用PCにインストールし、PS4にAtomMatrixのMACアドレスを設定します。
sixaxispairtool.en.lo4d.com
PS4コントローラをPCに有線で接続し、SixaxisPairToolを実行すると下記のようなウィンドウが表示されます。
黒塗りの部分は現在設定されている機器のMACアドレスなので、Change Masterの枠にAtom MatrixのMACアドレスを設定します。

Atom Matrix側では、PS4Controller by Juan Pablo Marquezというライブラリをインストールして、以下のスケッチを書き込みます。
#include <PS4Controller.h> void setup() { Serial.begin(115200); delay(2000); PS4.begin("00:00:00:00:00"); // ← AtomMatrixのMACアドレスを書く Serial.println("Waiting for PS4 Controller..."); } void loop() { if (PS4.isConnected()) { Serial.println("PS4 Connected!"); delay(500); } }
書き込んだら、AtomMatrixの横にあるボタンを押してリセットします。
シリアルモニタで「Waiting for PS4 Contoroller・・・」と表示されたら、PS4コントローラのPSボタンのみを1回押すと、ペアリングされ「PS4 Connected!」と表示されれば成功です。
void loop()を以下のように変えれば、ボタンとスティックの入力を表示できました。
void loop() { if (PS4.isConnected()) { Serial.printf( "LX:%4d LY:%4d RX:%4d RY:%4d L2:%3d R2:%3d\n", PS4.LStickX(), PS4.LStickY(), PS4.RStickX(), PS4.RStickY(), PS4.L2Value(), PS4.R2Value() ); if (PS4.Cross()) Serial.print(" X"); if (PS4.Circle()) Serial.print(" O"); if (PS4.Square()) Serial.print(" □"); if (PS4.Triangle())Serial.print(" △"); if (PS4.L1()) Serial.print(" L1"); if (PS4.R1()) Serial.print(" R1"); Serial.println(); delay(500); } }
これを使えば、PS4コントローラからAtomMatrixを動かすことができますね。