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