tuning

Dependencies:   mbed TextLCD RisetEEPROM_LCD

Committer:
tamamfirdaus
Date:
Mon Mar 18 15:02:10 2019 +0000
Revision:
0:638ec192471f
tuning;

Who changed what in which revision?

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