DRC向けのArduinoUNOをI2Cで通信して使うためのライブラリです。 詳しくは中にあるはずです。

Committer:
makidia
Date:
Sat Sep 07 05:04:04 2019 +0000
Revision:
0:8e7173f6eba2

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
makidia 0:8e7173f6eba2 1 #include "mbed.h"
makidia 0:8e7173f6eba2 2 #include "PS3pad.h"
makidia 0:8e7173f6eba2 3
makidia 0:8e7173f6eba2 4 /*
makidia 0:8e7173f6eba2 5 I2C通信をやっています
makidia 0:8e7173f6eba2 6 宣言方法:PS3pad name(SDA, SCL, Arduino_addrece);
makidia 0:8e7173f6eba2 7 ボタン使用方法:#define NAME name.BUTTON.BIT.MARU 丸ボタンの場合
makidia 0:8e7173f6eba2 8 NAMEに値が格納される
makidia 0:8e7173f6eba2 9 リモコン値取得方法:name.getValues();
makidia 0:8e7173f6eba2 10 その後、値を使えるようになる
makidia 0:8e7173f6eba2 11 */
makidia 0:8e7173f6eba2 12
makidia 0:8e7173f6eba2 13 PS3pad::PS3pad(PinName sda, PinName scl, int addr) : ds3com(sda,scl){
makidia 0:8e7173f6eba2 14 ds3com.frequency(400000);
makidia 0:8e7173f6eba2 15 ADDR = (addr << 1);
makidia 0:8e7173f6eba2 16
makidia 0:8e7173f6eba2 17 memset(get,0,8);
makidia 0:8e7173f6eba2 18 }
makidia 0:8e7173f6eba2 19
makidia 0:8e7173f6eba2 20
makidia 0:8e7173f6eba2 21 void PS3pad::getValues(void){
makidia 0:8e7173f6eba2 22 int i=0;
makidia 0:8e7173f6eba2 23
makidia 0:8e7173f6eba2 24 for(i=0;i<2;i++){get[i]=0;}
makidia 0:8e7173f6eba2 25 for(i=2;i<5;i++){get[i]=127;}
makidia 0:8e7173f6eba2 26 for(i=6;i<8;i++){get[i]=0;}
makidia 0:8e7173f6eba2 27
makidia 0:8e7173f6eba2 28 ds3com.read(ADDR, get, 8);
makidia 0:8e7173f6eba2 29
makidia 0:8e7173f6eba2 30 BUTTON.BIT.UP = get[0] >> 7;
makidia 0:8e7173f6eba2 31 BUTTON.BIT.RIGHT = (get[0] >> 6)-((get[0] >> 7) << 1);
makidia 0:8e7173f6eba2 32 BUTTON.BIT.DOWN = (get[0] >> 5)-((get[0] >> 6) << 1);
makidia 0:8e7173f6eba2 33 BUTTON.BIT.LEFT = (get[0] >> 4)-((get[0] >> 5) << 1);
makidia 0:8e7173f6eba2 34 BUTTON.BIT.SANKAKU = (get[0] >> 3)-((get[0] >> 4) << 1);
makidia 0:8e7173f6eba2 35 BUTTON.BIT.MARU = (get[0] >> 2)-((get[0] >> 3) << 1);
makidia 0:8e7173f6eba2 36 BUTTON.BIT.BATU = (get[0] >> 1)-((get[0] >> 2) << 1);
makidia 0:8e7173f6eba2 37 BUTTON.BIT.SIKAKU = (get[0])-((get[0] >> 1) << 1);
makidia 0:8e7173f6eba2 38 BUTTON.BIT.L1 = (get[1] >> 7);
makidia 0:8e7173f6eba2 39 BUTTON.BIT.R1 = (get[1] >> 6)-((get[1] >> 7) << 1);
makidia 0:8e7173f6eba2 40 BUTTON.BIT.SELECT = (get[1] >> 5)-((get[1] >> 6) << 1);
makidia 0:8e7173f6eba2 41 BUTTON.BIT.START = (get[1] >> 4)-((get[1] >> 5) << 1);
makidia 0:8e7173f6eba2 42 BUTTON.BIT.HOME = (get[1] >> 3)-((get[1] >> 4) << 1);
makidia 0:8e7173f6eba2 43 left_x = get[2]-128;
makidia 0:8e7173f6eba2 44 left_y = -(get[3]- 128+1);
makidia 0:8e7173f6eba2 45 right_x = get[4]-128;
makidia 0:8e7173f6eba2 46 right_y = -(get[5]- 128+1);
makidia 0:8e7173f6eba2 47 BUTTON.ANALOG.L2 = get[6];
makidia 0:8e7173f6eba2 48 BUTTON.ANALOG.R2 = get[7];
makidia 0:8e7173f6eba2 49
makidia 0:8e7173f6eba2 50 wait_ms(10);
makidia 0:8e7173f6eba2 51 }