![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Buat agip
Dependencies: Motor_1 encoderKRAI mbed millis
Fork of Robo_Taker_Nasional_2018 by
JoystickPS3.h@0:22acd37ed695, 2018-02-24 (annotated)
- Committer:
- Fathoni17
- Date:
- Sat Feb 24 07:57:51 2018 +0000
- Revision:
- 0:22acd37ed695
- Child:
- 3:b1403fcdaeb1
Joystick masalah
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Fathoni17 | 0:22acd37ed695 | 1 | #ifndef JOYSTICK_NUCLEO_H |
Fathoni17 | 0:22acd37ed695 | 2 | #define JOYSTICK_NUCLEO_H |
Fathoni17 | 0:22acd37ed695 | 3 | |
Fathoni17 | 0:22acd37ed695 | 4 | #include "mbed.h" |
Fathoni17 | 0:22acd37ed695 | 5 | #define JoystickPS3__serialDEFAULT_BAUD 115200 |
Fathoni17 | 0:22acd37ed695 | 6 | |
Fathoni17 | 0:22acd37ed695 | 7 | namespace JoystickPS3 { |
Fathoni17 | 0:22acd37ed695 | 8 | |
Fathoni17 | 0:22acd37ed695 | 9 | class joysticknucleo { |
Fathoni17 | 0:22acd37ed695 | 10 | public: |
Fathoni17 | 0:22acd37ed695 | 11 | joysticknucleo(PinName tx, PinName rx) : _serial(tx, rx) |
Fathoni17 | 0:22acd37ed695 | 12 | { |
Fathoni17 | 0:22acd37ed695 | 13 | |
Fathoni17 | 0:22acd37ed695 | 14 | } |
Fathoni17 | 0:22acd37ed695 | 15 | |
Fathoni17 | 0:22acd37ed695 | 16 | // Deklarasi variabel tombol analog |
Fathoni17 | 0:22acd37ed695 | 17 | unsigned char LX, LY, RX, RY, R2, L2; |
Fathoni17 | 0:22acd37ed695 | 18 | |
Fathoni17 | 0:22acd37ed695 | 19 | unsigned char button; |
Fathoni17 | 0:22acd37ed695 | 20 | unsigned char RL; |
Fathoni17 | 0:22acd37ed695 | 21 | unsigned char button_click; |
Fathoni17 | 0:22acd37ed695 | 22 | unsigned char RL_click; |
Fathoni17 | 0:22acd37ed695 | 23 | |
Fathoni17 | 0:22acd37ed695 | 24 | void setup(){ |
Fathoni17 | 0:22acd37ed695 | 25 | _serial.baud(JoystickPS3__serialDEFAULT_BAUD); |
Fathoni17 | 0:22acd37ed695 | 26 | } |
Fathoni17 | 0:22acd37ed695 | 27 | |
Fathoni17 | 0:22acd37ed695 | 28 | /*********************************************************************************************/ |
Fathoni17 | 0:22acd37ed695 | 29 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 30 | /** FUNGSI PEMBACAAN DATA **/ |
Fathoni17 | 0:22acd37ed695 | 31 | /** - Data yang diterima dari Serial Arduino berbentuk 8-bit **/ |
Fathoni17 | 0:22acd37ed695 | 32 | /** - Data yang diterima diolah menjadi boolean / 1-bit untuk data tombol button dan RL **/ |
Fathoni17 | 0:22acd37ed695 | 33 | /** karena data yang digunakan adalah 1-bit (true/false) **/ |
Fathoni17 | 0:22acd37ed695 | 34 | /** - Untuk analog data yang diterima tidak diolah karena rentang data yang dikirimkan **/ |
Fathoni17 | 0:22acd37ed695 | 35 | /** memiliki rentang 0-255 / 8-bit, dan data yang akan digunakan adalah data 8-bit **/ |
Fathoni17 | 0:22acd37ed695 | 36 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 37 | /** |------|-------|-------|------|-------|--------|-----------|----------| **/ |
Fathoni17 | 0:22acd37ed695 | 38 | /** Bit Ke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | **/ |
Fathoni17 | 0:22acd37ed695 | 39 | /** |------|-------|-------|------|-------|--------|-----------|----------| **/ |
Fathoni17 | 0:22acd37ed695 | 40 | /** Data | kiri | bawah | kanan | atas | kotak | silang | lingkaran | segitiga | **/ |
Fathoni17 | 0:22acd37ed695 | 41 | /** |------|-------|-------|------|-------|--------|-----------|----------| **/ |
Fathoni17 | 0:22acd37ed695 | 42 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 43 | /** - Penggabungan data R1, R2, L1, L2, R3, L3, START, dan SELECT disimpan dalam **/ |
Fathoni17 | 0:22acd37ed695 | 44 | /** variabel "RL" **/ |
Fathoni17 | 0:22acd37ed695 | 45 | /** - Urutan data pada variabel "RL" dan "RL_click" adalah **/ |
Fathoni17 | 0:22acd37ed695 | 46 | /** sebagai berikut **/ |
Fathoni17 | 0:22acd37ed695 | 47 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 48 | /** |----|--------|-------|----|----|----|----| **/ |
Fathoni17 | 0:22acd37ed695 | 49 | /** Bit Ke | 6 | 5 | 4 | 3 | 2 | 1 | 0 | **/ |
Fathoni17 | 0:22acd37ed695 | 50 | /** |----|--------|-------|----|----|----|----| **/ |
Fathoni17 | 0:22acd37ed695 | 51 | /** Data | PS | SELECT | START | L3 | L1 | R3 | R1 | **/ |
Fathoni17 | 0:22acd37ed695 | 52 | /** |----|--------|-------|----|----|----|----| **/ |
Fathoni17 | 0:22acd37ed695 | 53 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 54 | /*********************************************************************************************/ |
Fathoni17 | 0:22acd37ed695 | 55 | |
Fathoni17 | 0:22acd37ed695 | 56 | void olah_data(){ |
Fathoni17 | 0:22acd37ed695 | 57 | // Pengolahan data dari data "button" |
Fathoni17 | 0:22acd37ed695 | 58 | segitiga = (bool)((button >> 0) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 59 | lingkaran = (bool)((button >> 1) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 60 | silang = (bool)((button >> 2) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 61 | kotak = (bool)((button >> 3) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 62 | atas = (bool)((button >> 4) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 63 | kanan = (bool)((button >> 5) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 64 | bawah = (bool)((button >> 6) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 65 | kiri = (bool)((button >> 7) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 66 | |
Fathoni17 | 0:22acd37ed695 | 67 | // Pengolahan data dari data "RL" |
Fathoni17 | 0:22acd37ed695 | 68 | R1 = (bool)((RL >> 0) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 69 | R3 = (bool)((RL >> 1) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 70 | L1 = (bool)((RL >> 2) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 71 | L3 = (bool)((RL >> 3) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 72 | START = (bool)((RL >> 4) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 73 | SELECT = (bool)((RL >> 5) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 74 | PS = (bool)((RL >> 6) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 75 | |
Fathoni17 | 0:22acd37ed695 | 76 | segitiga_click = (bool)((button_click >> 0) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 77 | lingkaran_click = (bool)((button_click >> 1) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 78 | silang_click = (bool)((button_click >> 2) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 79 | kotak_click = (bool)((button_click >> 3) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 80 | atas_click = (bool)((button_click >> 4) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 81 | kanan_click = (bool)((button_click >> 5) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 82 | bawah_click = (bool)((button_click >> 6) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 83 | kiri_click = (bool)((button_click >> 7) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 84 | |
Fathoni17 | 0:22acd37ed695 | 85 | // Pengolahan data dari data "RL" |
Fathoni17 | 0:22acd37ed695 | 86 | R1_click = (bool)((RL_click >> 0) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 87 | R3_click = (bool)((RL_click >> 1) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 88 | L1_click = (bool)((RL_click >> 2) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 89 | L3_click = (bool)((RL_click >> 3) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 90 | START_click = (bool)((RL_click >> 4) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 91 | SELECT_click = (bool)((RL_click >> 5) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 92 | PS_click = (bool)((RL_click >> 6) & 0x1); |
Fathoni17 | 0:22acd37ed695 | 93 | } |
Fathoni17 | 0:22acd37ed695 | 94 | |
Fathoni17 | 0:22acd37ed695 | 95 | /*********************************************************************************************/ |
Fathoni17 | 0:22acd37ed695 | 96 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 97 | /** FUNGSI IDLE **/ |
Fathoni17 | 0:22acd37ed695 | 98 | /** - Fungsi dijalankan saat Arduino mengirimkan data yang merupakan **/ |
Fathoni17 | 0:22acd37ed695 | 99 | /** kondisi PS3 Disconnected **/ |
Fathoni17 | 0:22acd37ed695 | 100 | /** - Fungsi membuat semua data joystik bernilai 0 **/ |
Fathoni17 | 0:22acd37ed695 | 101 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 102 | /*********************************************************************************************/ |
Fathoni17 | 0:22acd37ed695 | 103 | |
Fathoni17 | 0:22acd37ed695 | 104 | void idle(){ |
Fathoni17 | 0:22acd37ed695 | 105 | // Set 0 |
Fathoni17 | 0:22acd37ed695 | 106 | button = 0; |
Fathoni17 | 0:22acd37ed695 | 107 | RL = 0; |
Fathoni17 | 0:22acd37ed695 | 108 | button_click = 0; |
Fathoni17 | 0:22acd37ed695 | 109 | RL_click = 0; |
Fathoni17 | 0:22acd37ed695 | 110 | R2 = 0; |
Fathoni17 | 0:22acd37ed695 | 111 | L2 = 0; |
Fathoni17 | 0:22acd37ed695 | 112 | RX = 0; |
Fathoni17 | 0:22acd37ed695 | 113 | RY = 0; |
Fathoni17 | 0:22acd37ed695 | 114 | LX = 0; |
Fathoni17 | 0:22acd37ed695 | 115 | LY = 0; |
Fathoni17 | 0:22acd37ed695 | 116 | |
Fathoni17 | 0:22acd37ed695 | 117 | } |
Fathoni17 | 0:22acd37ed695 | 118 | |
Fathoni17 | 0:22acd37ed695 | 119 | |
Fathoni17 | 0:22acd37ed695 | 120 | /*********************************************************************************************/ |
Fathoni17 | 0:22acd37ed695 | 121 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 122 | /** FUNGSI PEMBACAAN DATA **/ |
Fathoni17 | 0:22acd37ed695 | 123 | /** - Fungsi pembacaan data yang dikirim dari arduino **/ |
Fathoni17 | 0:22acd37ed695 | 124 | /** - Data yang dikirim dari arduino merupakan paket data dengan format pengiriman **/ |
Fathoni17 | 0:22acd37ed695 | 125 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 126 | /** |------|------|--------|----|--------------|----------|----|----|----|----|----|----| **/ |
Fathoni17 | 0:22acd37ed695 | 127 | /** | 0x88 | 0x08 | button | RL | button_click | RL_click | R2 | L2 | RX | RY | LX | LY | **/ |
Fathoni17 | 0:22acd37ed695 | 128 | /** |------|------|--------|----|--------------|----------|----|----|----|----|----|----| **/ |
Fathoni17 | 0:22acd37ed695 | 129 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 130 | /** |------|------| **/ |
Fathoni17 | 0:22acd37ed695 | 131 | /** | 0x88 | 0x09 | **/ |
Fathoni17 | 0:22acd37ed695 | 132 | /** |------|------| **/ |
Fathoni17 | 0:22acd37ed695 | 133 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 134 | /** - Jika urutan data yang diterima seperti tabel diatas, maka data tersebut akan **/ |
Fathoni17 | 0:22acd37ed695 | 135 | /** diolah untuk input ke aktuator **/ |
Fathoni17 | 0:22acd37ed695 | 136 | /** **/ |
Fathoni17 | 0:22acd37ed695 | 137 | /*********************************************************************************************/ |
Fathoni17 | 0:22acd37ed695 | 138 | |
Fathoni17 | 0:22acd37ed695 | 139 | void baca_data(){ |
Fathoni17 | 0:22acd37ed695 | 140 | // Interrupt Serial |
Fathoni17 | 0:22acd37ed695 | 141 | if(_serial.readable()&&(_serial.getc()==0x88)) { |
Fathoni17 | 0:22acd37ed695 | 142 | // Pembacaan data dilakukan jika data awal yang diterima adalah 0x88 kemudian 0x08 |
Fathoni17 | 0:22acd37ed695 | 143 | if(_serial.getc()==0x08){ |
Fathoni17 | 0:22acd37ed695 | 144 | // Proses Pembacaan Data |
Fathoni17 | 0:22acd37ed695 | 145 | button = _serial.getc(); |
Fathoni17 | 0:22acd37ed695 | 146 | RL = _serial.getc(); |
Fathoni17 | 0:22acd37ed695 | 147 | button_click = _serial.getc(); |
Fathoni17 | 0:22acd37ed695 | 148 | RL_click = _serial.getc(); |
Fathoni17 | 0:22acd37ed695 | 149 | R2 = _serial.getc(); |
Fathoni17 | 0:22acd37ed695 | 150 | L2 = _serial.getc(); |
Fathoni17 | 0:22acd37ed695 | 151 | RX = _serial.getc(); |
Fathoni17 | 0:22acd37ed695 | 152 | RY = _serial.getc(); |
Fathoni17 | 0:22acd37ed695 | 153 | LX = _serial.getc(); |
Fathoni17 | 0:22acd37ed695 | 154 | LY = _serial.getc(); |
Fathoni17 | 0:22acd37ed695 | 155 | } else if(_serial.getc()==0x09) { |
Fathoni17 | 0:22acd37ed695 | 156 | // PS3 Disconnected |
Fathoni17 | 0:22acd37ed695 | 157 | idle(); |
Fathoni17 | 0:22acd37ed695 | 158 | } else { |
Fathoni17 | 0:22acd37ed695 | 159 | idle(); |
Fathoni17 | 0:22acd37ed695 | 160 | } |
Fathoni17 | 0:22acd37ed695 | 161 | } |
Fathoni17 | 0:22acd37ed695 | 162 | } |
Fathoni17 | 0:22acd37ed695 | 163 | |
Fathoni17 | 0:22acd37ed695 | 164 | |
Fathoni17 | 0:22acd37ed695 | 165 | |
Fathoni17 | 0:22acd37ed695 | 166 | int readable(){ |
Fathoni17 | 0:22acd37ed695 | 167 | return _serial.readable(); |
Fathoni17 | 0:22acd37ed695 | 168 | } |
Fathoni17 | 0:22acd37ed695 | 169 | public: |
Fathoni17 | 0:22acd37ed695 | 170 | // Deklarasi variabel tombol joystik |
Fathoni17 | 0:22acd37ed695 | 171 | bool kiri, kanan, atas, bawah; |
Fathoni17 | 0:22acd37ed695 | 172 | bool segitiga, lingkaran, kotak, silang; |
Fathoni17 | 0:22acd37ed695 | 173 | bool L1, R1, L3, R3, START, SELECT, PS; |
Fathoni17 | 0:22acd37ed695 | 174 | |
Fathoni17 | 0:22acd37ed695 | 175 | bool kiri_click, kanan_click, atas_click, bawah_click; |
Fathoni17 | 0:22acd37ed695 | 176 | bool segitiga_click, lingkaran_click, kotak_click, silang_click; |
Fathoni17 | 0:22acd37ed695 | 177 | bool L1_click, R1_click, L3_click, R3_click; |
Fathoni17 | 0:22acd37ed695 | 178 | bool START_click, SELECT_click, PS_click; |
Fathoni17 | 0:22acd37ed695 | 179 | |
Fathoni17 | 0:22acd37ed695 | 180 | protected: |
Fathoni17 | 0:22acd37ed695 | 181 | virtual int _getc(){return _serial.getc();} |
Fathoni17 | 0:22acd37ed695 | 182 | Serial _serial; |
Fathoni17 | 0:22acd37ed695 | 183 | }; |
Fathoni17 | 0:22acd37ed695 | 184 | |
Fathoni17 | 0:22acd37ed695 | 185 | }; |
Fathoni17 | 0:22acd37ed695 | 186 | |
Fathoni17 | 0:22acd37ed695 | 187 | using namespace JoystickPS3; |
Fathoni17 | 0:22acd37ed695 | 188 | |
Fathoni17 | 0:22acd37ed695 | 189 | #endif |