Belum semua kombinasi. Start = mode rotasi otomatis. Mode otomatis = L1 dan R1 untuk iterasi. Select = keluar mode rotasi otomatis.

Dependencies:   Motor PID mbed millis

Fork of BASE_NASIONAL_V2 by KRAI 2017

Committer:
gustavaditya
Date:
Mon Jun 12 09:24:40 2017 +0000
Revision:
1:6503823263a4
Parent:
0:312d1d0781ac
Base Siap

Who changed what in which revision?

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