Test Limit Switch Reloader

Dependencies:   Motor mbed

Committer:
MarchioKevin
Date:
Sun Jun 11 09:26:47 2017 +0000
Revision:
1:e8fcbd118f4d
Parent:
0:f510a9c32a2c
Balbla

Who changed what in which revision?

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