PS4 controller with IM315
IM315PS4.hpp
- Committer:
- m2130
- Date:
- 2022-08-06
- Revision:
- 0:9577e971f55b
- Child:
- 1:090d61e465d7
File content as of revision 0:9577e971f55b:
#ifndef IM315PS4_H #define IM315PS4_H #include "mbed.h" //DATA[1] #define TRI 0x01 #define CIRCLE 0x02 #define SQUARE 0x04 #define CROSS 0x08 #define TOUCHPAD 0x10 #define PS 0x20 #define L1 0x40 #define R1 0x80 //DATA[2] #define UP 0x01 #define RIGHT 0x02 #define LEFT 0x04 #define DOWN 0x08 #define OPTION 0x10 #define SHARE 0x20 #define L3 0x40 #define R3 0x80 /*IM315を用いてPS4コントローラ(DS2)を使う *受信 例 F446RE用IM315接続基盤の場合 IM315PS4 ds4(A0, A1); マイコン ~ PC間のボーレート指定なし(9600) IM315PS4 ds4(A0, A1, 115200); マイコン ~ PC間のボーレート指定あり DS4はArduino Nano用読み取り基盤を用いてボタンの状態を読み取り下記のような8バイトの文字列データ(16進数表記)にして送信してください /-------------------------------------------- DATA[0] 上の表に対応するように DATA[1] 上の表に対応するように DATA[2] 0x00 ~ 0xff DATA[3] 0x00 ~ 0xff DATA[4] ~ DATA[7] 左右スティックのアナログ値 4 -> LスティックのX値 5 -> LスティックのY値 6, 7 -> Rスティックで同様 例 01040000ff000000 △ボタンと十字左ボタンが押され、Lスティックを最大まで右に倒した場合 /-------------------------------------------- /---------- sbdbtライブラリとの相違点 ---------- ・ニュートラル関数がない ・L2 R2ボタンがアナログでのみ使用可能 ・L3 R3ボタン(スティック押し込み)が使用可能 ・PSボタン タッチパッドが使用可能 ・スティックの入力範囲が 0 ~ 255 となっている ・スティックの初期値(ニュートラル値)は 0x7f(127) /-------------------------------------------- */ class IM315PS4{ public: IM315PS4(PinName TX, PinName RX); //マイコン ~ PC間のボーレート指定なし(9600) IM315PS4(PinName TX, PinName RX, int baud); //マイコン ~ PC間のボーレート指定あり void button_state(); //全ボタン, スティックの状態表示 void data_print(); bool up(); bool right(); bool left(); bool down(); bool tri(); bool circle(); bool square(); bool cross(); bool l1(); bool r1(); bool l3(); bool r3(); bool option(); bool share(); bool touchpad(); bool ps(); uint8_t l2An(); uint8_t r2An(); uint8_t lsx(); uint8_t lsy(); uint8_t rsx(); uint8_t rsy(); ~IM315PS4(); private: Serial *dev; Serial *_pc; uint8_t *data; uint8_t *DATA; void get(); uint8_t ASCII(uint8_t data1, uint8_t data2); int i; int val; int len; }; #endif