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.
Dependencies: Motor NewTextLCD PID mbed
PS3_USB.h
00001 /*********************************************************************************************/ 00002 /** GARUDAGO-ITB (KRAI2016) **/ 00003 /** #ROADTOBANGKOK! **/ 00004 /** **/ 00005 /** HEADER DATA JOYSTIK PS3_USB **/ 00006 /** **/ 00007 /** **/ 00008 /** Created by : **/ 00009 /** Erya Warandita Bupuly Tomara **/ 00010 /** EL'13 - 13213063 **/ 00011 /** **/ 00012 /** Last Update : 17 November 2015, 00.30 WIB **/ 00013 /*********************************************************************************************/ 00014 00015 00016 #ifndef MBED_H 00017 #include "mbed.h" 00018 #endif 00019 00020 #ifndef PS3USB__serialDEFAULT_BAUD 00021 #define PS3USB__serialDEFAULT_BAUD 115200 00022 #endif 00023 00024 Serial debug(USBTX,USBRX); 00025 00026 00027 00028 namespace PS3USB { 00029 00030 class PS3_USB { 00031 public: 00032 PS3_USB (PinName tx, PinName rx) : _serial(tx, rx) 00033 { 00034 00035 } 00036 00037 // Deklarasi variabel tombol analog 00038 unsigned char LX, LY, RX, RY, R2, L2; 00039 00040 unsigned char button; 00041 unsigned char RL; 00042 unsigned char button_click; 00043 unsigned char RL_click; 00044 00045 void setup(){ 00046 _serial.baud(PS3USB__serialDEFAULT_BAUD); 00047 debug.baud(9600); 00048 } 00049 00050 /*********************************************************************************************/ 00051 /** **/ 00052 /** FUNGSI PEMBACAAN DATA **/ 00053 /** - Data yang diterima dari Serial Arduino berbentuk 8-bit **/ 00054 /** - Data yang diterima diolah menjadi boolean / 1-bit untuk data tombol button dan RL **/ 00055 /** karena data yang digunakan adalah 1-bit (true/false) **/ 00056 /** - Untuk analog data yang diterima tidak diolah karena rentang data yang dikirimkan **/ 00057 /** memiliki rentang 0-255 / 8-bit, dan data yang akan digunakan adalah data 8-bit **/ 00058 /** **/ 00059 /** |------|-------|-------|------|-------|--------|-----------|----------| **/ 00060 /** Bit Ke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | **/ 00061 /** |------|-------|-------|------|-------|--------|-----------|----------| **/ 00062 /** Data | kiri | bawah | kanan | atas | kotak | silang | lingkaran | segitiga | **/ 00063 /** |------|-------|-------|------|-------|--------|-----------|----------| **/ 00064 /** **/ 00065 /** - Penggabungan data R1, R2, L1, L2, R3, L3, START, dan SELECT disimpan dalam **/ 00066 /** variabel "RL" **/ 00067 /** - Urutan data pada variabel "RL" dan "RL_click" adalah **/ 00068 /** sebagai berikut **/ 00069 /** **/ 00070 /** |----|--------|-------|----|----|----|----| **/ 00071 /** Bit Ke | 6 | 5 | 4 | 3 | 2 | 1 | 0 | **/ 00072 /** |----|--------|-------|----|----|----|----| **/ 00073 /** Data | PS | SELECT | START | L3 | L1 | R3 | R1 | **/ 00074 /** |----|--------|-------|----|----|----|----| **/ 00075 /** **/ 00076 /*********************************************************************************************/ 00077 00078 void olah_data() 00079 { 00080 // Pengolahan data dari data "button" 00081 segitiga = (bool)((button >> 0) & 0x1); 00082 lingkaran = (bool)((button >> 1) & 0x1); 00083 silang = (bool)((button >> 2) & 0x1); 00084 kotak = (bool)((button >> 3) & 0x1); 00085 atas = (bool)((button >> 4) & 0x1); 00086 kanan = (bool)((button >> 5) & 0x1); 00087 bawah = (bool)((button >> 6) & 0x1); 00088 kiri = (bool)((button >> 7) & 0x1); 00089 00090 // Pengolahan data dari data "RL" 00091 R1 = (bool)((RL >> 0) & 0x1); 00092 R3 = (bool)((RL >> 1) & 0x1); 00093 L1 = (bool)((RL >> 2) & 0x1); 00094 L3 = (bool)((RL >> 3) & 0x1); 00095 START = (bool)((RL >> 4) & 0x1); 00096 SELECT = (bool)((RL >> 5) & 0x1); 00097 PS = (bool)((RL >> 6) & 0x1); 00098 00099 segitiga_click = (bool)((button_click >> 0) & 0x1); 00100 lingkaran_click = (bool)((button_click >> 1) & 0x1); 00101 silang_click = (bool)((button_click >> 2) & 0x1); 00102 kotak_click = (bool)((button_click >> 3) & 0x1); 00103 atas_click = (bool)((button_click >> 4) & 0x1); 00104 kanan_click = (bool)((button_click >> 5) & 0x1); 00105 bawah_click = (bool)((button_click >> 6) & 0x1); 00106 kiri_click = (bool)((button_click >> 7) & 0x1); 00107 00108 // Pengolahan data dari data "RL" 00109 R1_click = (bool)((RL_click >> 0) & 0x1); 00110 R3_click = (bool)((RL_click >> 1) & 0x1); 00111 L1_click = (bool)((RL_click >> 2) & 0x1); 00112 L3_click = (bool)((RL_click >> 3) & 0x1); 00113 START_click = (bool)((RL_click >> 4) & 0x1); 00114 SELECT_click = (bool)((RL_click >> 5) & 0x1); 00115 PS_click = (bool)((RL_click >> 6) & 0x1); 00116 } 00117 00118 /*********************************************************************************************/ 00119 /** **/ 00120 /** FUNGSI IDLE **/ 00121 /** - Fungsi dijalankan saat Arduino mengirimkan data yang merupakan **/ 00122 /** kondisi PS3 Disconnected **/ 00123 /** - Fungsi membuat semua data joystik bernilai 0 **/ 00124 /** **/ 00125 /*********************************************************************************************/ 00126 00127 void idle(){ 00128 // Set 0 00129 button = 0; 00130 RL = 0; 00131 button_click = 0; 00132 RL_click = 0; 00133 R2 = 0; 00134 L2 = 0; 00135 RX = 0; 00136 RY = 0; 00137 LX = 0; 00138 LY = 0; 00139 00140 } 00141 00142 00143 /*********************************************************************************************/ 00144 /** **/ 00145 /** FUNGSI PEMBACAAN DATA **/ 00146 /** - Fungsi pembacaan data yang dikirim dari arduino **/ 00147 /** - Data yang dikirim dari arduino merupakan paket data dengan format pengiriman **/ 00148 /** **/ 00149 /** |------|------|--------|----|--------------|----------|----|----|----|----|----|----| **/ 00150 /** | 0x88 | 0x08 | button | RL | button_click | RL_click | R2 | L2 | RX | RY | LX | LY | **/ 00151 /** |------|------|--------|----|--------------|----------|----|----|----|----|----|----| **/ 00152 /** **/ 00153 /** |------|------| **/ 00154 /** | 0x88 | 0x09 | **/ 00155 /** |------|------| **/ 00156 /** **/ 00157 /** - Jika urutan data yang diterima seperti tabel diatas, maka data tersebut akan **/ 00158 /** diolah untuk input ke aktuator **/ 00159 /** **/ 00160 /*********************************************************************************************/ 00161 00162 void baca_data() 00163 { 00164 // Interrupt Serial 00165 if(_serial.readable()&&(_serial.getc()==0x88)) { 00166 // Pembacaan data dilakukan jika data awal yang diterima adalah 0x88 kemudian 0x08 00167 if(_serial.getc()==0x08){ 00168 // Proses Pembacaan Data 00169 button = _serial.getc(); 00170 RL = _serial.getc(); 00171 button_click = _serial.getc(); 00172 RL_click = _serial.getc(); 00173 R2 = _serial.getc(); 00174 L2 = _serial.getc(); 00175 RX = _serial.getc(); 00176 RY = _serial.getc(); 00177 LX = _serial.getc(); 00178 LY = _serial.getc(); 00179 } else if(_serial.getc()==0x09) { 00180 // PS3 Disconnected 00181 idle(); 00182 } else { 00183 idle(); } 00184 00185 } 00186 } 00187 00188 00189 00190 int readable(){ 00191 return _serial.readable(); 00192 } 00193 00194 public: 00195 // Deklarasi variabel tombol joystik 00196 bool kiri, kanan, atas, bawah; 00197 bool segitiga, lingkaran, kotak, silang; 00198 bool L1, R1, L3, R3, START, SELECT, PS; 00199 00200 bool kiri_click, kanan_click, atas_click, bawah_click; 00201 bool segitiga_click, lingkaran_click, kotak_click, silang_click; 00202 bool L1_click, R1_click, L3_click, R3_click; 00203 bool START_click, SELECT_click, PS_click; 00204 00205 protected: 00206 virtual int _getc(){return _serial.getc();} 00207 Serial _serial; 00208 }; 00209 00210 }; 00211 00212 using namespace PS3USB;
Generated on Fri Jul 15 2022 01:46:22 by
1.7.2