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