1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ArduinoでESP32を利用し、PS4コントローラと接続

Last updated at Posted at 2022-06-10

概要

IPHONEのアプリでドローンを操縦する予定ですが、アプリの開発にまた時間がかかるので、先にゲームのコントローラーから操縦できるように作りたいと思います。

電路図

IMG_3006.jpg

Arduino側 Esp32側
5V 5V
GND GND
TX U0R
RX U0T

ESP32のプログラム

ここでPS4-esp32ライブラリを利用して、コントローラの入力を取得できます。

PS4コントローラーをESP32に接続するとき、PS4コンソールのBluetooth MACアドレスを把握する必要があります。MACアドレスは sixaxispairtool 使用して取得できます。

まず、PS4コンソールと接続する前に、PS4コンソールのBluetooth MACアドレスを記入します。

void setup()
{
    Serial.begin(115200);
    PS4.attach(event);
    PS4.begin("1a:2b:3c:01:01:01"); //PS4コンソールのBluetooth MACアドレスを記入
    Serial.print("Ready.");
}

そして、文字列をArduinoに出力するため、文字列の前に { を入れって、文字列が終わる所に } を閉めます。

void event()
{
    if (PS4.event.button_down.right) Serial.print("{Right Button}");
    if (PS4.event.button_down.down) Serial.print("{Down Button}");
    if (PS4.event.button_down.up) Serial.print("{Up Button}");
    if (PS4.event.button_down.left) Serial.print("{Left Button}");

    if (PS4.event.button_down.square) Serial.print("{Square Button}");
    if (PS4.event.button_down.cross) Serial.print("{Cross Button}");
    if (PS4.event.button_down.circle) Serial.print("{Circle Button}");
    if (PS4.event.button_down.triangle) Serial.print("{Triangle Button}");

    if (PS4.event.button_down.upright) Serial.print("{Up Right}");
    if (PS4.event.button_down.downright) Serial.print("{Down Right}");
    if (PS4.event.button_down.upleft) Serial.print("{Up Left}");
    if (PS4.event.button_down.downleft) Serial.print("{Down Left}");

    if (PS4.event.button_down.l1) Serial.print("{L1 Button}");
    if (PS4.event.button_down.r1) Serial.print("{R1 Button}");

    if (PS4.event.button_down.share) Serial.print("{Share Button}");
    if (PS4.event.button_down.options) Serial.print("{Options Button}");
    if (PS4.event.button_down.l3) Serial.print("{L3 Button}");
    if (PS4.event.button_down.r3) Serial.print("{R3 Button}");
}


void loop() {

}

Arduinoのプログラム

String text = "";
void setup() {
  Serial.begin(115200);
}

String detectString();

void loop() {
  if(Serial.available()){
    text = detectString();
    Serial.println(text);
  }
  //delay(1000);
}

String detectString(){
    while(Serial.read() != '{');
    return (Serial.readStringUntil('}'));
}

結果

イベント処理で、ボタンがクリックしたらメッセージを確認できます。
image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?