IM315を用いてDS2(PS2コントローラー)を扱うライブラリ

Committer:
m2130
Date:
Mon Apr 04 06:19:27 2022 +0000
Revision:
1:9ad38dad969c
Parent:
0:06c265b1fbd1
IM315 de DS2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
m2130 0:06c265b1fbd1 1 #ifndef IM315_H
m2130 0:06c265b1fbd1 2 #define IM315_H
m2130 0:06c265b1fbd1 3 #include "mbed.h"
m2130 0:06c265b1fbd1 4
m2130 0:06c265b1fbd1 5 //DATA[1]
m2130 0:06c265b1fbd1 6 #define TRI 0x01
m2130 0:06c265b1fbd1 7 #define CIRCLE 0x02
m2130 0:06c265b1fbd1 8 #define SQUARE 0x04
m2130 0:06c265b1fbd1 9 #define CROSS 0x08
m2130 0:06c265b1fbd1 10 #define L2 0x10
m2130 0:06c265b1fbd1 11 #define R2 0x20
m2130 0:06c265b1fbd1 12 #define L1 0x40
m2130 0:06c265b1fbd1 13 #define R1 0x80
m2130 0:06c265b1fbd1 14
m2130 0:06c265b1fbd1 15 //DATA[2]
m2130 0:06c265b1fbd1 16 #define UP 0x01
m2130 0:06c265b1fbd1 17 #define RIGHT 0x02
m2130 0:06c265b1fbd1 18 #define LEFT 0x04
m2130 0:06c265b1fbd1 19 #define DOWN 0x08
m2130 0:06c265b1fbd1 20 #define START 0x10
m2130 0:06c265b1fbd1 21 #define SELECT 0x20
m2130 0:06c265b1fbd1 22 #define L3 0x40
m2130 0:06c265b1fbd1 23 #define R3 0x80
m2130 0:06c265b1fbd1 24
m2130 0:06c265b1fbd1 25 /*IM315を用いてPS2コントローラ(DS2)を使う *受信
m2130 0:06c265b1fbd1 26 例 L432KC用IM315接続基盤の場合
m2130 0:06c265b1fbd1 27 IM315 ds2(D1, D0); マイコン ~ PC間のボーレート指定なし(9600)
m2130 0:06c265b1fbd1 28 IM315 ds2(D1, D0, 115200); マイコン ~ PC間のボーレート指定あり
m2130 0:06c265b1fbd1 29
m2130 1:9ad38dad969c 30
m2130 0:06c265b1fbd1 31 DS2はArduino Nano用読み取り基盤を用いてボタンの状態を読み取り下記のような8バイトの文字列データ(16進数表記)にして送信してください
m2130 0:06c265b1fbd1 32 /--------------------------------------------
m2130 0:06c265b1fbd1 33 DATA[0] 0x80固定
m2130 0:06c265b1fbd1 34 DATA[1] 上の表に対応するように
m2130 0:06c265b1fbd1 35 DATA[2] 上の表に対応するように
m2130 0:06c265b1fbd1 36 DATA[3] 0x00固定
m2130 0:06c265b1fbd1 37 DATA[4] ~ DATA[7] 左右スティックのアナログ値 4 -> LスティックのX値 5 -> LスティックのY値 6, 7 -> Rスティックで同様
m2130 0:06c265b1fbd1 38
m2130 0:06c265b1fbd1 39 例 80010400FF808080 △ボタンと十字左ボタンが押され、Lスティックを最大まで右に倒した場合
m2130 0:06c265b1fbd1 40 /--------------------------------------------
m2130 0:06c265b1fbd1 41
m2130 1:9ad38dad969c 42
m2130 0:06c265b1fbd1 43 /---------- sbdbtライブラリとの相違点 ----------
m2130 0:06c265b1fbd1 44 ・ニュートラル関数がない(スティックのニュートラル値が定まらずほぼ機能していない)
m2130 0:06c265b1fbd1 45 ・L2 R2ボタンがアナログで使用不可能
m2130 0:06c265b1fbd1 46 ・L3 R3ボタン(スティック押し込み)が使用可能
m2130 0:06c265b1fbd1 47 ・スティックの入力範囲が 0 ~ 255 となっている
m2130 0:06c265b1fbd1 48 ・スティックの初期値(ニュートラル値)は 0x7f ~ 0x80(127 ~ 128)だと思われる 定まらない(ハードウェア上の問題?)
m2130 1:9ad38dad969c 49 /--------------------------------------------
m2130 1:9ad38dad969c 50
m2130 0:06c265b1fbd1 51 */
m2130 0:06c265b1fbd1 52
m2130 0:06c265b1fbd1 53 class IM315{
m2130 0:06c265b1fbd1 54 public:
m2130 0:06c265b1fbd1 55 IM315(PinName TX, PinName RX); //マイコン ~ PC間のボーレート指定なし(9600)
m2130 0:06c265b1fbd1 56 IM315(PinName TX, PinName RX, int baud); //マイコン ~ PC間のボーレート指定あり
m2130 0:06c265b1fbd1 57 void button_state(); //全ボタン, スティックの状態表示
m2130 0:06c265b1fbd1 58 void data_print();
m2130 0:06c265b1fbd1 59 bool up();
m2130 0:06c265b1fbd1 60 bool right();
m2130 0:06c265b1fbd1 61 bool left();
m2130 0:06c265b1fbd1 62 bool down();
m2130 0:06c265b1fbd1 63 bool tri();
m2130 0:06c265b1fbd1 64 bool circle();
m2130 0:06c265b1fbd1 65 bool square();
m2130 0:06c265b1fbd1 66 bool cross();
m2130 0:06c265b1fbd1 67 bool l2();
m2130 0:06c265b1fbd1 68 bool r2();
m2130 0:06c265b1fbd1 69 bool l1();
m2130 0:06c265b1fbd1 70 bool r1();
m2130 0:06c265b1fbd1 71 bool start();
m2130 0:06c265b1fbd1 72 bool select();
m2130 0:06c265b1fbd1 73 bool l3();
m2130 0:06c265b1fbd1 74 bool r3();
m2130 0:06c265b1fbd1 75 char lsx();
m2130 0:06c265b1fbd1 76 char lsy();
m2130 0:06c265b1fbd1 77 char rsx();
m2130 0:06c265b1fbd1 78 char rsy();
m2130 0:06c265b1fbd1 79 ~IM315();
m2130 0:06c265b1fbd1 80 private:
m2130 0:06c265b1fbd1 81 Serial *dev;
m2130 0:06c265b1fbd1 82 Serial *_pc;
m2130 0:06c265b1fbd1 83 unsigned char *data;
m2130 0:06c265b1fbd1 84 unsigned char *DATA;
m2130 0:06c265b1fbd1 85 void get();
m2130 0:06c265b1fbd1 86 unsigned char ASCII(unsigned char data1, unsigned char data2);
m2130 0:06c265b1fbd1 87 int i;
m2130 0:06c265b1fbd1 88 int val;
m2130 0:06c265b1fbd1 89 int len;
m2130 0:06c265b1fbd1 90 };
m2130 0:06c265b1fbd1 91 #endif