概要
IPHONEのアプリでドローンを操縦する予定ですが、アプリの開発にまた時間がかかるので、先にゲームのコントローラーから操縦できるように作りたいと思います。
電路図
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('}'));
}