tugas akhir
Dependencies: Motor mbed millis
Fork of DagonFly__RoadToJapan_15Mei_Ultimate by
Diff: JoystickPS3.h
- Revision:
- 53:11515147caf9
- Parent:
- 52:a39e26b935a9
--- a/JoystickPS3.h Sun Jul 02 01:37:31 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +0,0 @@ -#ifndef MBED_H -#include "mbed.h" -#endif - -#ifndef JoystickPS3__serialDEFAULT_BAUD -#define JoystickPS3__serialDEFAULT_BAUD 115200 -#endif - -Serial debug(USBTX,USBRX); - -namespace JoystickPS3 { - -class joysticknucleo { -public: - joysticknucleo(PinName tx, PinName rx) : _serial(tx, rx) - { - - } - -// Deklarasi variabel tombol analog - unsigned char LX, LY, RX, RY, R2, L2; - - unsigned char button; - unsigned char RL; - unsigned char button_click; - unsigned char RL_click; - - void setup(){ - _serial.baud(JoystickPS3__serialDEFAULT_BAUD); - debug.baud(9600); - } - - /*********************************************************************************************/ - /** **/ - /** FUNGSI PEMBACAAN DATA **/ - /** - Data yang diterima dari Serial Arduino berbentuk 8-bit **/ - /** - Data yang diterima diolah menjadi boolean / 1-bit untuk data tombol button dan RL **/ - /** karena data yang digunakan adalah 1-bit (true/false) **/ - /** - Untuk analog data yang diterima tidak diolah karena rentang data yang dikirimkan **/ - /** memiliki rentang 0-255 / 8-bit, dan data yang akan digunakan adalah data 8-bit **/ - /** **/ - /** |------|-------|-------|------|-------|--------|-----------|----------| **/ - /** Bit Ke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | **/ - /** |------|-------|-------|------|-------|--------|-----------|----------| **/ - /** Data | kiri | bawah | kanan | atas | kotak | silang | lingkaran | segitiga | **/ - /** |------|-------|-------|------|-------|--------|-----------|----------| **/ - /** **/ - /** - Penggabungan data R1, R2, L1, L2, R3, L3, START, dan SELECT disimpan dalam **/ - /** variabel "RL" **/ - /** - Urutan data pada variabel "RL" dan "RL_click" adalah **/ - /** sebagai berikut **/ - /** **/ - /** |----|--------|-------|----|----|----|----| **/ - /** Bit Ke | 6 | 5 | 4 | 3 | 2 | 1 | 0 | **/ - /** |----|--------|-------|----|----|----|----| **/ - /** Data | PS | SELECT | START | L3 | L1 | R3 | R1 | **/ - /** |----|--------|-------|----|----|----|----| **/ - /** **/ - /*********************************************************************************************/ - - void olah_data() - { - // Pengolahan data dari data "button" - segitiga = (bool)((button >> 0) & 0x1); - lingkaran = (bool)((button >> 1) & 0x1); - silang = (bool)((button >> 2) & 0x1); - kotak = (bool)((button >> 3) & 0x1); - atas = (bool)((button >> 4) & 0x1); - kanan = (bool)((button >> 5) & 0x1); - bawah = (bool)((button >> 6) & 0x1); - kiri = (bool)((button >> 7) & 0x1); - - // Pengolahan data dari data "RL" - R1 = (bool)((RL >> 0) & 0x1); - R3 = (bool)((RL >> 1) & 0x1); - L1 = (bool)((RL >> 2) & 0x1); - L3 = (bool)((RL >> 3) & 0x1); - START = (bool)((RL >> 4) & 0x1); - SELECT = (bool)((RL >> 5) & 0x1); - PS = (bool)((RL >> 6) & 0x1); - - // R2 click dan L2 click - if (R2 > 100) { - if ( R2sebelum) { R2_click = false; - } else { R2_click = true;} - R2sebelum = true; - }else { - R2sebelum = false; - R2_click = false; - } - if (L2 > 100) { - if ( L2sebelum) { L2_click = false; - } else { L2_click = true;} - L2sebelum = true; - }else { L2sebelum = false; - L2_click = false; - } - - if (LY < 100 && LY > 50) { - if ( LYpSebelum) { LYp_click = false; - } else { LYp_click = true;} - LYpSebelum = true; - }else { LYpSebelum = false; - LYp_click = false; - } - if (LY > 150 && LY < 200) { - if ( LYnSebelum) { LYn_click = false; - } else { LYn_click = true;} - LYnSebelum = true; - }else { LYnSebelum = false; - LYn_click = false; - } - segitiga_click = (bool)((button_click >> 0) & 0x1); - lingkaran_click = (bool)((button_click >> 1) & 0x1); - silang_click = (bool)((button_click >> 2) & 0x1); - kotak_click = (bool)((button_click >> 3) & 0x1); - atas_click = (bool)((button_click >> 4) & 0x1); - kanan_click = (bool)((button_click >> 5) & 0x1); - bawah_click = (bool)((button_click >> 6) & 0x1); - kiri_click = (bool)((button_click >> 7) & 0x1); - - // Pengolahan data dari data "RL" - R1_click = (bool)((RL_click >> 0) & 0x1); - R3_click = (bool)((RL_click >> 1) & 0x1); - L1_click = (bool)((RL_click >> 2) & 0x1); - L3_click = (bool)((RL_click >> 3) & 0x1); - START_click = (bool)((RL_click >> 4) & 0x1); - SELECT_click = (bool)((RL_click >> 5) & 0x1); - PS_click = (bool)((RL_click >> 6) & 0x1); - } - - /*********************************************************************************************/ - /** **/ - /** FUNGSI IDLE **/ - /** - Fungsi dijalankan saat Arduino mengirimkan data yang merupakan **/ - /** kondisi PS3 Disconnected **/ - /** - Fungsi membuat semua data joystik bernilai 0 **/ - /** **/ - /*********************************************************************************************/ - - void idle(){ - // Set 0 - button = 0; - RL = 0; - button_click = 0; - RL_click = 0; - R2_click = 0; - L2_click = 0; - L3_click = 0; - LYp_click = 0; - LYn_click = 0; - R2 = 0; - L2 = 0; - RX = 0; - RY = 0; - LX = 0; - LY = 0; - - } - - /*********************************************************************************************/ - /** **/ - /** FUNGSI PEMBACAAN DATA **/ - /** - Fungsi pembacaan data yang dikirim dari arduino **/ - /** - Data yang dikirim dari arduino merupakan paket data dengan format pengiriman **/ - /** **/ - /** |------|------|--------|----|--------------|----------|----|----|----|----|----|----| **/ - /** | 0x88 | 0x08 | button | RL | button_click | RL_click | R2 | L2 | RX | RY | LX | LY | **/ - /** |------|------|--------|----|--------------|----------|----|----|----|----|----|----| **/ - /** **/ - /** |------|------| **/ - /** | 0x88 | 0x09 | **/ - /** |------|------| **/ - /** **/ - /** - Jika urutan data yang diterima seperti tabel diatas, maka data tersebut akan **/ - /** diolah untuk input ke aktuator **/ - /** **/ - /*********************************************************************************************/ - - void baca_data() - { - // Interrupt Serial - if(_serial.readable()&&(_serial.getc()==0x88)) { - // Pembacaan data dilakukan jika data awal yang diterima adalah 0x88 kemudian 0x08 - if(_serial.getc()==0x08){ - // Proses Pembacaan Data - button = _serial.getc(); - RL = _serial.getc(); - button_click = _serial.getc(); - RL_click = _serial.getc(); - R2 = _serial.getc(); - L2 = _serial.getc(); - RX = _serial.getc(); - RY = _serial.getc(); - LX = _serial.getc(); - LY = _serial.getc(); - } else if(_serial.getc()==0x09) { - // PS3 Disconnected - idle(); - } else { - idle(); } - // Indikator - Print data pada monitor PC - //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); - } - } - - - int readable(){ - return _serial.readable(); - } - -public: - // Deklarasi variabel tombol joystik - bool kiri, kanan, atas, bawah; - bool segitiga, lingkaran, kotak, silang; - bool L1, R1, L3, R3, START, SELECT, PS; - - bool kiri_click, kanan_click, atas_click, bawah_click; - bool segitiga_click, lingkaran_click, kotak_click, silang_click; - bool L1_click, R1_click, L3_click, R3_click, R2_click, L2_click, LYp_click, LYn_click; - bool R2sebelum, L2sebelum, L3sebelum, LYpSebelum, LYnSebelum; - bool START_click, SELECT_click, PS_click; - -protected: - virtual int _getc(){return _serial.getc();} - Serial _serial; -}; - -}; - -using namespace JoystickPS3; \ No newline at end of file