DRC向けのArduinoUNOをI2Cで通信して使うためのライブラリです。 詳しくは中にあるはずです。
PS3pad.cpp@0:8e7173f6eba2, 2019-09-07 (annotated)
- Committer:
- makidia
- Date:
- Sat Sep 07 05:04:04 2019 +0000
- Revision:
- 0:8e7173f6eba2
Who changed what in which revision?
User | Revision | Line number | New 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 | } |