Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
PS3Arduino.txt@1:e8fcbd118f4d, 2017-06-11 (annotated)
- Committer:
- MarchioKevin
- Date:
- Sun Jun 11 09:26:47 2017 +0000
- Revision:
- 1:e8fcbd118f4d
- Parent:
- 0:f510a9c32a2c
Balbla
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MarchioKevin | 0:f510a9c32a2c | 1 | /*********************************************************************************************/ |
| MarchioKevin | 0:f510a9c32a2c | 2 | /** **/ |
| MarchioKevin | 0:f510a9c32a2c | 3 | /** PROGRAM KOMUNIKASI DATA JOYSTIK PS3 **/ |
| MarchioKevin | 0:f510a9c32a2c | 4 | /** **/ |
| MarchioKevin | 0:f510a9c32a2c | 5 | /** Joystik PS3 -> Arduino -> STM32Nucleo **/ |
| MarchioKevin | 0:f510a9c32a2c | 6 | /** **/ |
| MarchioKevin | 0:f510a9c32a2c | 7 | /** Fanny Achmad Hindrarta **/ |
| MarchioKevin | 0:f510a9c32a2c | 8 | /** EL'12 - 13212076 **/ |
| MarchioKevin | 0:f510a9c32a2c | 9 | /** **/ |
| MarchioKevin | 0:f510a9c32a2c | 10 | /** Last Update : 01 Februar1 2015, 20.30 **/ |
| MarchioKevin | 0:f510a9c32a2c | 11 | /*********************************************************************************************/ |
| MarchioKevin | 0:f510a9c32a2c | 12 | |
| MarchioKevin | 0:f510a9c32a2c | 13 | #include <PS3BT.h> |
| MarchioKevin | 0:f510a9c32a2c | 14 | #include <usbhub.h> |
| MarchioKevin | 0:f510a9c32a2c | 15 | //#include <PS3USB.h> |
| MarchioKevin | 0:f510a9c32a2c | 16 | #include "Arduino.h" |
| MarchioKevin | 0:f510a9c32a2c | 17 | // Satisfy IDE, which only needs to see the include statment in the ino. |
| MarchioKevin | 0:f510a9c32a2c | 18 | #ifdef dobogusinclude |
| MarchioKevin | 0:f510a9c32a2c | 19 | #include <spi4teensy3.h> |
| MarchioKevin | 0:f510a9c32a2c | 20 | #endif |
| MarchioKevin | 0:f510a9c32a2c | 21 | |
| MarchioKevin | 0:f510a9c32a2c | 22 | |
| MarchioKevin | 0:f510a9c32a2c | 23 | USB Usb; |
| MarchioKevin | 0:f510a9c32a2c | 24 | |
| MarchioKevin | 0:f510a9c32a2c | 25 | // Bluetooth |
| MarchioKevin | 0:f510a9c32a2c | 26 | // You can create the instance of the class in two ways |
| MarchioKevin | 0:f510a9c32a2c | 27 | BTD Btd(&Usb); // You have to create the Bluetooth Dongle instance like so |
| MarchioKevin | 0:f510a9c32a2c | 28 | //You can create the instance of the class in two ways |
| MarchioKevin | 0:f510a9c32a2c | 29 | PS3BT PS3(&Btd); // This will just create the instance |
| MarchioKevin | 0:f510a9c32a2c | 30 | //PS3BT PS3(&Btd, 0x00, 0x15, 0x83, 0x3D, 0x0A, 0x57); // This will also store the bluetooth address - this can be obtained from the dongle when running the sketch |
| MarchioKevin | 0:f510a9c32a2c | 31 | /* |
| MarchioKevin | 0:f510a9c32a2c | 32 | // USB |
| MarchioKevin | 0:f510a9c32a2c | 33 | // You can create the instance of the class in two ways |
| MarchioKevin | 0:f510a9c32a2c | 34 | PS3USB PS3(&Usb); // This will just create the instance |
| MarchioKevin | 0:f510a9c32a2c | 35 | //PS3USB PS3(&Btd, 0x00, 0x15, 0x83, 0x3D, 0x0A, 0x57); // This will also store the bluetooth address - this can be obtained from the dongle when running the sketch |
| MarchioKevin | 0:f510a9c32a2c | 36 | */ |
| MarchioKevin | 0:f510a9c32a2c | 37 | |
| MarchioKevin | 0:f510a9c32a2c | 38 | boolean printAngle; |
| MarchioKevin | 0:f510a9c32a2c | 39 | uint8_t state = 0; |
| MarchioKevin | 0:f510a9c32a2c | 40 | |
| MarchioKevin | 0:f510a9c32a2c | 41 | // Deklarasi tombol |
| MarchioKevin | 0:f510a9c32a2c | 42 | boolean kiri_click=0, kanan_click=0, atas_click=0, bawah_click=0; |
| MarchioKevin | 0:f510a9c32a2c | 43 | boolean segitiga_click=0, lingkaran_click=0, kotak_click=0, silang_click=0; |
| MarchioKevin | 0:f510a9c32a2c | 44 | boolean L1_click=0, R1_click=0, L3_click=0, R3_click=0; |
| MarchioKevin | 0:f510a9c32a2c | 45 | boolean START_click=0, SELECT_click=0, PS_click=0; |
| MarchioKevin | 0:f510a9c32a2c | 46 | |
| MarchioKevin | 0:f510a9c32a2c | 47 | // Deklarasi variabel tombol analog |
| MarchioKevin | 0:f510a9c32a2c | 48 | unsigned char LX, LY, RX, RY, aL2, aR2; |
| MarchioKevin | 0:f510a9c32a2c | 49 | |
| MarchioKevin | 0:f510a9c32a2c | 50 | // Deklarasi varibel data yang dikirim |
| MarchioKevin | 0:f510a9c32a2c | 51 | unsigned char button; |
| MarchioKevin | 0:f510a9c32a2c | 52 | unsigned char RL; |
| MarchioKevin | 0:f510a9c32a2c | 53 | unsigned int button_click; |
| MarchioKevin | 0:f510a9c32a2c | 54 | unsigned int RL_click; |
| MarchioKevin | 0:f510a9c32a2c | 55 | |
| MarchioKevin | 0:f510a9c32a2c | 56 | void setup_joystik() |
| MarchioKevin | 0:f510a9c32a2c | 57 | { |
| MarchioKevin | 0:f510a9c32a2c | 58 | while (!Serial) // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection |
| MarchioKevin | 0:f510a9c32a2c | 59 | { |
| MarchioKevin | 0:f510a9c32a2c | 60 | Serial.write(0x88); |
| MarchioKevin | 0:f510a9c32a2c | 61 | Serial.write(0x09); |
| MarchioKevin | 0:f510a9c32a2c | 62 | } |
| MarchioKevin | 0:f510a9c32a2c | 63 | if (Usb.Init() == -1) { |
| MarchioKevin | 0:f510a9c32a2c | 64 | //Serial.print(F("\r\nOSC did not start")); |
| MarchioKevin | 0:f510a9c32a2c | 65 | while (1) //halt |
| MarchioKevin | 0:f510a9c32a2c | 66 | { |
| MarchioKevin | 0:f510a9c32a2c | 67 | Serial.write(0x88); |
| MarchioKevin | 0:f510a9c32a2c | 68 | Serial.write(0x09); |
| MarchioKevin | 0:f510a9c32a2c | 69 | } |
| MarchioKevin | 0:f510a9c32a2c | 70 | } |
| MarchioKevin | 0:f510a9c32a2c | 71 | //Serial.print(F("\r\nPS3 USB Library Started")); |
| MarchioKevin | 0:f510a9c32a2c | 72 | } |
| MarchioKevin | 0:f510a9c32a2c | 73 | |
| MarchioKevin | 0:f510a9c32a2c | 74 | /*********************************************************************************************/ |
| MarchioKevin | 0:f510a9c32a2c | 75 | /** **/ |
| MarchioKevin | 0:f510a9c32a2c | 76 | /** FUNGSI PENGIRIMAN DATA **/ |
| MarchioKevin | 0:f510a9c32a2c | 77 | /** - Data yang akan dikirim adalah paket data 8-bit dengan urutan sebagai berikut **/ |
| MarchioKevin | 0:f510a9c32a2c | 78 | /** |------|------|--------|----|--------------|----------|----|----|----|----|----|----| **/ |
| MarchioKevin | 0:f510a9c32a2c | 79 | /** | 0x88 | 0x08 | button | RL | button_click | RL_click | R2 | L2 | RX | RY | LX | LY | **/ |
| MarchioKevin | 0:f510a9c32a2c | 80 | /** |------|------|--------|----|--------------|----------|----|----|----|----|----|----| **/ |
| MarchioKevin | 0:f510a9c32a2c | 81 | /** **/ |
| MarchioKevin | 0:f510a9c32a2c | 82 | /*********************************************************************************************/ |
| MarchioKevin | 0:f510a9c32a2c | 83 | |
| MarchioKevin | 0:f510a9c32a2c | 84 | void kirimdatajoystik() |
| MarchioKevin | 0:f510a9c32a2c | 85 | { |
| MarchioKevin | 0:f510a9c32a2c | 86 | |
| MarchioKevin | 0:f510a9c32a2c | 87 | Serial.write(0x88); |
| MarchioKevin | 0:f510a9c32a2c | 88 | Serial.write(0x08); |
| MarchioKevin | 0:f510a9c32a2c | 89 | Serial.write(button); |
| MarchioKevin | 0:f510a9c32a2c | 90 | Serial.write(RL); |
| MarchioKevin | 0:f510a9c32a2c | 91 | Serial.write(button_click); |
| MarchioKevin | 0:f510a9c32a2c | 92 | Serial.write(RL_click); |
| MarchioKevin | 0:f510a9c32a2c | 93 | Serial.write(aR2); |
| MarchioKevin | 0:f510a9c32a2c | 94 | Serial.write(aL2); |
| MarchioKevin | 0:f510a9c32a2c | 95 | Serial.write(RX); |
| MarchioKevin | 0:f510a9c32a2c | 96 | Serial.write(RY); |
| MarchioKevin | 0:f510a9c32a2c | 97 | Serial.write(LX); |
| MarchioKevin | 0:f510a9c32a2c | 98 | Serial.write(LY); |
| MarchioKevin | 0:f510a9c32a2c | 99 | |
| MarchioKevin | 0:f510a9c32a2c | 100 | // Debug |
| MarchioKevin | 0:f510a9c32a2c | 101 | |
| MarchioKevin | 0:f510a9c32a2c | 102 | /* |
| MarchioKevin | 0:f510a9c32a2c | 103 | Serial.print(millis()); |
| MarchioKevin | 0:f510a9c32a2c | 104 | Serial.print("\t"); |
| MarchioKevin | 0:f510a9c32a2c | 105 | Serial.print(button); |
| MarchioKevin | 0:f510a9c32a2c | 106 | Serial.print("\t"); |
| MarchioKevin | 0:f510a9c32a2c | 107 | Serial.print(RL); |
| MarchioKevin | 0:f510a9c32a2c | 108 | Serial.print("\t"); |
| MarchioKevin | 0:f510a9c32a2c | 109 | Serial.print(button_click); |
| MarchioKevin | 0:f510a9c32a2c | 110 | Serial.print("\t"); |
| MarchioKevin | 0:f510a9c32a2c | 111 | Serial.print(RL_click); |
| MarchioKevin | 0:f510a9c32a2c | 112 | Serial.print("\t"); |
| MarchioKevin | 0:f510a9c32a2c | 113 | Serial.print(aR2); |
| MarchioKevin | 0:f510a9c32a2c | 114 | Serial.print("\t"); |
| MarchioKevin | 0:f510a9c32a2c | 115 | Serial.print(aL2); |
| MarchioKevin | 0:f510a9c32a2c | 116 | Serial.print("\t"); |
| MarchioKevin | 0:f510a9c32a2c | 117 | Serial.print(RX); |
| MarchioKevin | 0:f510a9c32a2c | 118 | Serial.print("\t"); |
| MarchioKevin | 0:f510a9c32a2c | 119 | Serial.print(RY); |
| MarchioKevin | 0:f510a9c32a2c | 120 | Serial.print("\t"); |
| MarchioKevin | 0:f510a9c32a2c | 121 | Serial.print(LX); |
| MarchioKevin | 0:f510a9c32a2c | 122 | Serial.print("\t"); |
| MarchioKevin | 0:f510a9c32a2c | 123 | Serial.println(LY); |
| MarchioKevin | 0:f510a9c32a2c | 124 | */ |
| MarchioKevin | 0:f510a9c32a2c | 125 | } |
| MarchioKevin | 0:f510a9c32a2c | 126 | |
| MarchioKevin | 0:f510a9c32a2c | 127 | /*****************************************************************************************/ |
| MarchioKevin | 0:f510a9c32a2c | 128 | /** SETUP REGISTER dan INISIALISASI **/ |
| MarchioKevin | 0:f510a9c32a2c | 129 | /** - Setup Joystik **/ |
| MarchioKevin | 0:f510a9c32a2c | 130 | /** - Baud Rate Serial 115200, 8-bit, 1 stop, 0 parity **/ |
| MarchioKevin | 0:f510a9c32a2c | 131 | /*****************************************************************************************/ |
| MarchioKevin | 0:f510a9c32a2c | 132 | |
| MarchioKevin | 0:f510a9c32a2c | 133 | void setup() { |
| MarchioKevin | 0:f510a9c32a2c | 134 | Serial.begin(115200); |
| MarchioKevin | 0:f510a9c32a2c | 135 | |
| MarchioKevin | 0:f510a9c32a2c | 136 | setup_joystik(); |
| MarchioKevin | 0:f510a9c32a2c | 137 | } |
| MarchioKevin | 0:f510a9c32a2c | 138 | |
| MarchioKevin | 0:f510a9c32a2c | 139 | |
| MarchioKevin | 0:f510a9c32a2c | 140 | /*****************************************************************************************/ |
| MarchioKevin | 0:f510a9c32a2c | 141 | /** **/ |
| MarchioKevin | 0:f510a9c32a2c | 142 | /** FUNGSI PEMBACAAN DATA JOYSTIK **/ |
| MarchioKevin | 0:f510a9c32a2c | 143 | /** - Data dari Joystik dikirim melalui Bluetooth. **/ |
| MarchioKevin | 0:f510a9c32a2c | 144 | /** Lihat Library "PS3BT.h" **/ |
| MarchioKevin | 0:f510a9c32a2c | 145 | /** - Data tombol dari joystik adalah data 1-bit. Pengiriman data melalui USART **/ |
| MarchioKevin | 0:f510a9c32a2c | 146 | /** adalah 8-bit. Agar pengiriman data efisien, maka data 1-bit digabungkan **/ |
| MarchioKevin | 0:f510a9c32a2c | 147 | /** agar terbentuk data 8-bit **/ |
| MarchioKevin | 0:f510a9c32a2c | 148 | /** - Penggabungan data segitiga, longkaran, silang, kotak, arah atas, arah kanan, **/ |
| MarchioKevin | 0:f510a9c32a2c | 149 | /** arah bawah, arah kiri disimpan dalam variabel "button" **/ |
| MarchioKevin | 0:f510a9c32a2c | 150 | /** - Urutan data pada variabel "button" dan "button_click" **/ |
| MarchioKevin | 0:f510a9c32a2c | 151 | /** adalah sebagai berikut **/ |
| MarchioKevin | 0:f510a9c32a2c | 152 | /** **/ |
| MarchioKevin | 0:f510a9c32a2c | 153 | /** |------|-------|-------|------|-------|--------|-----------|----------| **/ |
| MarchioKevin | 0:f510a9c32a2c | 154 | /** Bit Ke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | **/ |
| MarchioKevin | 0:f510a9c32a2c | 155 | /** |------|-------|-------|------|-------|--------|-----------|----------| **/ |
| MarchioKevin | 0:f510a9c32a2c | 156 | /** Data | kiri | bawah | kanan | atas | kotak | silang | lingkaran | segitiga | **/ |
| MarchioKevin | 0:f510a9c32a2c | 157 | /** |------|-------|-------|------|-------|--------|-----------|----------| **/ |
| MarchioKevin | 0:f510a9c32a2c | 158 | /** **/ |
| MarchioKevin | 0:f510a9c32a2c | 159 | /** - Penggabungan data R1, R2, L1, L2, R3, L3, START, dan SELECT disimpan dalam **/ |
| MarchioKevin | 0:f510a9c32a2c | 160 | /** variabel "RL" **/ |
| MarchioKevin | 0:f510a9c32a2c | 161 | /** - Urutan data pada variabel "RL" dan "RL_click" adalah **/ |
| MarchioKevin | 0:f510a9c32a2c | 162 | /** sebagai berikut **/ |
| MarchioKevin | 0:f510a9c32a2c | 163 | /** **/ |
| MarchioKevin | 0:f510a9c32a2c | 164 | /** |----|--------|-------|----|----|----|----| **/ |
| MarchioKevin | 0:f510a9c32a2c | 165 | /** Bit Ke | 6 | 5 | 4 | 3 | 2 | 1 | 0 | **/ |
| MarchioKevin | 0:f510a9c32a2c | 166 | /** |----|--------|-------|----|----|----|----| **/ |
| MarchioKevin | 0:f510a9c32a2c | 167 | /** Data | PS | SELECT | START | L3 | L1 | R3 | R1 | **/ |
| MarchioKevin | 0:f510a9c32a2c | 168 | /** |----|--------|-------|----|----|----|----| **/ |
| MarchioKevin | 0:f510a9c32a2c | 169 | /** **/ |
| MarchioKevin | 0:f510a9c32a2c | 170 | /*****************************************************************************************/ |
| MarchioKevin | 0:f510a9c32a2c | 171 | |
| MarchioKevin | 0:f510a9c32a2c | 172 | void loop() { |
| MarchioKevin | 0:f510a9c32a2c | 173 | button = 0; |
| MarchioKevin | 0:f510a9c32a2c | 174 | RL = 0; |
| MarchioKevin | 0:f510a9c32a2c | 175 | button_click=0; |
| MarchioKevin | 0:f510a9c32a2c | 176 | RL_click=0; |
| MarchioKevin | 0:f510a9c32a2c | 177 | Usb.Task(); |
| MarchioKevin | 0:f510a9c32a2c | 178 | |
| MarchioKevin | 0:f510a9c32a2c | 179 | // Pembacaan data joystik dilakukan jika PS3 tersambung ke Arduino |
| MarchioKevin | 0:f510a9c32a2c | 180 | if (PS3.PS3Connected || PS3.PS3NavigationConnected) { |
| MarchioKevin | 0:f510a9c32a2c | 181 | // Pembacaan dan penggabungan data segitiga, lingkaran, silang, kotak, atas, kanan, bawah, kiri |
| MarchioKevin | 0:f510a9c32a2c | 182 | // Data bernilai '1' jika tombol ditekan |
| MarchioKevin | 0:f510a9c32a2c | 183 | if(PS3.getButtonPress(TRIANGLE)){ |
| MarchioKevin | 0:f510a9c32a2c | 184 | button = button + (0x1 << 0); |
| MarchioKevin | 0:f510a9c32a2c | 185 | } |
| MarchioKevin | 0:f510a9c32a2c | 186 | if(PS3.getButtonPress(CIRCLE)){ |
| MarchioKevin | 0:f510a9c32a2c | 187 | button = button + (0x1 << 1); |
| MarchioKevin | 0:f510a9c32a2c | 188 | } |
| MarchioKevin | 0:f510a9c32a2c | 189 | if(PS3.getButtonPress(CROSS)){ |
| MarchioKevin | 0:f510a9c32a2c | 190 | button = button + (0x1 << 2); |
| MarchioKevin | 0:f510a9c32a2c | 191 | } |
| MarchioKevin | 0:f510a9c32a2c | 192 | if(PS3.getButtonPress(SQUARE)){ |
| MarchioKevin | 0:f510a9c32a2c | 193 | button = button + (0x1 << 3); |
| MarchioKevin | 0:f510a9c32a2c | 194 | } |
| MarchioKevin | 0:f510a9c32a2c | 195 | if(PS3.getButtonPress(UP)){ |
| MarchioKevin | 0:f510a9c32a2c | 196 | button = button + (0x1 << 4); |
| MarchioKevin | 0:f510a9c32a2c | 197 | } |
| MarchioKevin | 0:f510a9c32a2c | 198 | if(PS3.getButtonPress(RIGHT)){ |
| MarchioKevin | 0:f510a9c32a2c | 199 | button = button + (0x1 << 5); |
| MarchioKevin | 0:f510a9c32a2c | 200 | } |
| MarchioKevin | 0:f510a9c32a2c | 201 | if(PS3.getButtonPress(DOWN)){ |
| MarchioKevin | 0:f510a9c32a2c | 202 | button = button + (0x1 << 6); |
| MarchioKevin | 0:f510a9c32a2c | 203 | } |
| MarchioKevin | 0:f510a9c32a2c | 204 | if(PS3.getButtonPress(LEFT)){ |
| MarchioKevin | 0:f510a9c32a2c | 205 | button = button + (0x1 << 7); |
| MarchioKevin | 0:f510a9c32a2c | 206 | } |
| MarchioKevin | 0:f510a9c32a2c | 207 | |
| MarchioKevin | 0:f510a9c32a2c | 208 | // Pembacaan dan penggabungan data R1, R3, L1, L3, START, SELECT, dan PS |
| MarchioKevin | 0:f510a9c32a2c | 209 | // Data bernilai '1' jika tombol ditekan |
| MarchioKevin | 0:f510a9c32a2c | 210 | if(PS3.getButtonPress(R1)){ |
| MarchioKevin | 0:f510a9c32a2c | 211 | RL = RL + (0x1 << 0); |
| MarchioKevin | 0:f510a9c32a2c | 212 | } |
| MarchioKevin | 0:f510a9c32a2c | 213 | if(PS3.getButtonPress(R3)){ |
| MarchioKevin | 0:f510a9c32a2c | 214 | RL = RL + (0x1 << 1); |
| MarchioKevin | 0:f510a9c32a2c | 215 | } |
| MarchioKevin | 0:f510a9c32a2c | 216 | if(PS3.getButtonPress(L1)){ |
| MarchioKevin | 0:f510a9c32a2c | 217 | RL = RL + (0x1 << 2); |
| MarchioKevin | 0:f510a9c32a2c | 218 | } |
| MarchioKevin | 0:f510a9c32a2c | 219 | if(PS3.getButtonPress(L3)){ |
| MarchioKevin | 0:f510a9c32a2c | 220 | RL = RL + (0x1 << 3); |
| MarchioKevin | 0:f510a9c32a2c | 221 | } |
| MarchioKevin | 0:f510a9c32a2c | 222 | if(PS3.getButtonPress(START)){ |
| MarchioKevin | 0:f510a9c32a2c | 223 | RL = RL + (0x1 << 4); |
| MarchioKevin | 0:f510a9c32a2c | 224 | } |
| MarchioKevin | 0:f510a9c32a2c | 225 | if(PS3.getButtonPress(SELECT)){ |
| MarchioKevin | 0:f510a9c32a2c | 226 | RL = RL + (0x1 << 5); |
| MarchioKevin | 0:f510a9c32a2c | 227 | } |
| MarchioKevin | 0:f510a9c32a2c | 228 | if(PS3.getButtonPress(PS)){ |
| MarchioKevin | 0:f510a9c32a2c | 229 | RL = RL + (0x1 << 6); |
| MarchioKevin | 0:f510a9c32a2c | 230 | } |
| MarchioKevin | 0:f510a9c32a2c | 231 | |
| MarchioKevin | 0:f510a9c32a2c | 232 | // Pembacaan dan penggabungan data segitiga, lingkaran, silang, kotak, atas, kanan, bawah, kiri |
| MarchioKevin | 0:f510a9c32a2c | 233 | // Data bernilai '1' hanya saat tombol pertama kali ditekan |
| MarchioKevin | 0:f510a9c32a2c | 234 | if(PS3.getButtonClick(TRIANGLE)){ |
| MarchioKevin | 0:f510a9c32a2c | 235 | button_click = button_click + (0x1 << 0); |
| MarchioKevin | 0:f510a9c32a2c | 236 | } |
| MarchioKevin | 0:f510a9c32a2c | 237 | if(PS3.getButtonClick(CIRCLE)){ |
| MarchioKevin | 0:f510a9c32a2c | 238 | button_click = button_click + (0x1 << 1); |
| MarchioKevin | 0:f510a9c32a2c | 239 | } |
| MarchioKevin | 0:f510a9c32a2c | 240 | if(PS3.getButtonClick(CROSS)){ |
| MarchioKevin | 0:f510a9c32a2c | 241 | button_click = button_click + (0x1 << 2); |
| MarchioKevin | 0:f510a9c32a2c | 242 | } |
| MarchioKevin | 0:f510a9c32a2c | 243 | if(PS3.getButtonClick(SQUARE)){ |
| MarchioKevin | 0:f510a9c32a2c | 244 | button_click = button_click + (0x1 << 3); |
| MarchioKevin | 0:f510a9c32a2c | 245 | } |
| MarchioKevin | 0:f510a9c32a2c | 246 | if(PS3.getButtonClick(UP)){ |
| MarchioKevin | 0:f510a9c32a2c | 247 | button_click = button_click + (0x1 << 4); |
| MarchioKevin | 0:f510a9c32a2c | 248 | } |
| MarchioKevin | 0:f510a9c32a2c | 249 | if(PS3.getButtonClick(RIGHT)){ |
| MarchioKevin | 0:f510a9c32a2c | 250 | button_click = button_click + (0x1 << 5); |
| MarchioKevin | 0:f510a9c32a2c | 251 | } |
| MarchioKevin | 0:f510a9c32a2c | 252 | if(PS3.getButtonClick(DOWN)){ |
| MarchioKevin | 0:f510a9c32a2c | 253 | button_click = button_click + (0x1 << 6); |
| MarchioKevin | 0:f510a9c32a2c | 254 | } |
| MarchioKevin | 0:f510a9c32a2c | 255 | if(PS3.getButtonClick(LEFT)){ |
| MarchioKevin | 0:f510a9c32a2c | 256 | button_click = button_click + (0x1 << 7); |
| MarchioKevin | 0:f510a9c32a2c | 257 | } |
| MarchioKevin | 0:f510a9c32a2c | 258 | |
| MarchioKevin | 0:f510a9c32a2c | 259 | if(PS3.getButtonClick(R1)){ |
| MarchioKevin | 0:f510a9c32a2c | 260 | RL_click = RL_click + (0x1 << 0); |
| MarchioKevin | 0:f510a9c32a2c | 261 | } |
| MarchioKevin | 0:f510a9c32a2c | 262 | if(PS3.getButtonClick(R3)){ |
| MarchioKevin | 0:f510a9c32a2c | 263 | RL_click = RL_click + (0x1 << 1); |
| MarchioKevin | 0:f510a9c32a2c | 264 | } |
| MarchioKevin | 0:f510a9c32a2c | 265 | if(PS3.getButtonClick(L1)){ |
| MarchioKevin | 0:f510a9c32a2c | 266 | RL_click = RL_click + (0x1 << 2); |
| MarchioKevin | 0:f510a9c32a2c | 267 | } |
| MarchioKevin | 0:f510a9c32a2c | 268 | if(PS3.getButtonClick(L3)){ |
| MarchioKevin | 0:f510a9c32a2c | 269 | RL_click = RL_click + (0x1 << 3); |
| MarchioKevin | 0:f510a9c32a2c | 270 | } |
| MarchioKevin | 0:f510a9c32a2c | 271 | if(PS3.getButtonClick(START)){ |
| MarchioKevin | 0:f510a9c32a2c | 272 | RL_click = RL_click + (0x1 << 4); |
| MarchioKevin | 0:f510a9c32a2c | 273 | } |
| MarchioKevin | 0:f510a9c32a2c | 274 | if(PS3.getButtonClick(SELECT)){ |
| MarchioKevin | 0:f510a9c32a2c | 275 | RL_click = RL_click + (0x1 << 5); |
| MarchioKevin | 0:f510a9c32a2c | 276 | } |
| MarchioKevin | 0:f510a9c32a2c | 277 | if(PS3.getButtonClick(PS)){ |
| MarchioKevin | 0:f510a9c32a2c | 278 | RL_click = RL_click + (0x1 << 6); |
| MarchioKevin | 0:f510a9c32a2c | 279 | } |
| MarchioKevin | 0:f510a9c32a2c | 280 | |
| MarchioKevin | 0:f510a9c32a2c | 281 | // Tombol Analog |
| MarchioKevin | 0:f510a9c32a2c | 282 | LX = PS3.getAnalogHat(LeftHatX); |
| MarchioKevin | 0:f510a9c32a2c | 283 | LY = PS3.getAnalogHat(LeftHatY); |
| MarchioKevin | 0:f510a9c32a2c | 284 | RX = PS3.getAnalogHat(RightHatX); |
| MarchioKevin | 0:f510a9c32a2c | 285 | RY = PS3.getAnalogHat(RightHatY); |
| MarchioKevin | 0:f510a9c32a2c | 286 | |
| MarchioKevin | 0:f510a9c32a2c | 287 | aL2 = PS3.getAnalogButton(L2); |
| MarchioKevin | 0:f510a9c32a2c | 288 | aR2 = PS3.getAnalogButton(R2); |
| MarchioKevin | 0:f510a9c32a2c | 289 | |
| MarchioKevin | 0:f510a9c32a2c | 290 | kirimdatajoystik(); |
| MarchioKevin | 0:f510a9c32a2c | 291 | } else { |
| MarchioKevin | 0:f510a9c32a2c | 292 | // PS3 Disconnected |
| MarchioKevin | 0:f510a9c32a2c | 293 | Serial.write(0x88); |
| MarchioKevin | 0:f510a9c32a2c | 294 | Serial.write(0x09); |
| MarchioKevin | 0:f510a9c32a2c | 295 | } |
| MarchioKevin | 0:f510a9c32a2c | 296 | delay(3); |
| MarchioKevin | 0:f510a9c32a2c | 297 | } |
| MarchioKevin | 0:f510a9c32a2c | 298 | |
| MarchioKevin | 0:f510a9c32a2c | 299 |