base versi 1 motherboard prototype

Dependencies:   Motor NewTextLCD PID mbed

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?

UserRevisionLine numberNew 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;