Arduino : Eksplorasi Cara Kerja Joystick - Elang Sakti
Download Ebook Belajar Arduino PDF, Arduino untuk pemula
Jasa Pembuatan Program Arduino, pemrograman Arduino
# Hack Your Skills! to be Professional Mechatronics

Arduino : Eksplorasi Cara Kerja Joystick

18 komentar
Ketika bersih-bersih kolong tempat tidur, eh ada joystick rusak. Tiba-tiba terpikir untuk mengetahui bagaimana cara kerja joystick tersebut. Apalagi joystick ini transparan sehingga komponen di dalamnya tampak dari luar, ada motor, dan beberapa komponen yang yang kelihatan menarik lainnya. Dalam artikel ini, kita akan sedikit mempelajari cara kerja joystick dan bagaimana alat tersebut bisa digunakan untuk mengontrol untuk bergerak maju - mundur dan bergerak ke kanan dan ke kiri. Biar lebih asyik, kita akan mengetahui seperti apa alat dan data yang keluar dari alat tersebut dengan bantuan arduino.

Hasil akhir dari percobaan ini akan tampak seperti gambar. Karena joystick ini sudah rusak, maka kita akan membongkarnya dan mengambil alat yang digunakan untuk mengontrol gerak objek dalam video game. Dengan demikian, untuk mempermudah percobaan butuh beberapa kabel jumper dan black housing female. Selain rangkaian tersebut, kita juga akan membuat program sederhana yang berfungsi untuk mengirimkan data dari alat tersebut ke komputer melalui koneksi serial.

Arduino dan Cara Kerja Joystick rusak
Arduino dan Joystick
Dalam joystick utuh tersebut ada dua buah PCB. PCB dengan ukuran kecil yang berisi dua buah joystick, sedangkan PCB yang besar berisi keypad dan IC untuk mengontrol LED, dua buah motor, dan komunikasi data ke komputer atau PS. Sebenarnya joystick itu bisa kita fungsikan untuk berbagai macam aplikasi, akan tetapi yang umum kita temui adalah untuk mengontrol mobil-mobilan, pesat mainan, atau bahkan robot.

Arduino - Membongkar joystick rusak
Gambar Joystick dibongkar

Skema Rangkaian Joystick

Untuk sementara kita akan berfokus untuk bermain dengan komponen utama joystick. Pada stick yang saya punya, komponen ini terdiri dari dua buah trimmer (variabel resistor) dan sebuah toggle swtich. Gambar di bawah ini merupakan dua buah joystick yang sudah saya pisahkan dari casenya dan kabel penghubungnya saya potong. Warna biru muda adalah variabel resistor yang yang bisa diubah-ubah dengan tuas putih yang ada di atas.

Cara kerja joystick dan Arduino
Masing-masing Joystick terdiri dari 2 buah trimmer dan 1 toggle switch

Kedua joystick tersebut masing-masing memiliki trimmer dengan resistansi yang sama, yaitu 10K ohm (di bodinya tertulis B103) dan terhubung secara paralel. PCB yang kecil punya 8 jalur yang dihubungkan ke PCB besar dengan jalur-jalur yang diberi nama dengan RP1, RP2, RP3, RP4, K12, K11, VDD, dan GND. RP1 sampai RP4 merupakan output dari trimmer dari kedua joystick, masing-masing joystick memiliki 2 trimmer, satu untuk gerakan vertikal (atau maju-mundur) dan satu lagi untuk gerakan horisontal (atau kanan-kiri). K12 dan K11 sebagai jalur output untuk penekanan joystick (toggle switch), dan sisanya untuk setrum (+ dan -). Gambar di bawah ini menunjukkan nama-nama pin yang tertera pada PCB besar.

Jalur skema cara kerja joystick
Nama-nama pin out PCB Joystick

Berikut ini adalah jalur rangkaian joystick yang saya dapatkan setelah mempelajarinya skema yang tertera pada PCB.

Skema joystick twin - Jalur skematik joystick
Skema PCB Joystick twin

Program Sketch dengan Arduino

Logika untuk program ini yaitu : Pin A0 dan A1 digunakan untuk membaca voltase pada kedua trimmer yang berfungsi untuk pergerakan maju-mundur dan kanan-kiri. Dengan demikian, hasil yang didapatkan mirip dengan titik koordinat, yaitu koordinat X dan koordinat Y. Atau dalam program saya tulis sebagai V dan H (Vertikal dan Horisontal) yang mengacu pada trimmer yang bergerak ke arah kanan-kiri atau maju mundur.

Jika ada perubahan pada pembacaan dengan analogrRead(), maka akan dikirimkan ke komputer melalui komunikasi serial. Berikut ini adalah program lengkap untuk percobaan dengan joystick bekas tersebut.

/*
 * Menampilkan informasi posisi joystick
 * coder : elangsakti
 *
 */

const int pV = A0;
const int pH = A1;

void setup() {
  Serial.begin(9600);
  
  pinMode(pV, INPUT);
  pinMode(pH, INPUT);
}

long dataV, dataH;
long lastV, lastH; 
void loop() {
  dataV = analogRead(pV);
  dataH = analogRead(pH);
  
  if(dataV != lastV || dataH != lastH){
    Serial.print("V:");
    Serial.print(dataV);
    Serial.print(", H:");
    Serial.print(dataH);
    Serial.println();
    lastV = dataV;
    lastH = dataH;
  }
}

Hasil & Sekilas Pembahasan tentang Joystick

Jika mengacu pada konsep analog pada Arduino, maka kemungkinan data yang dikirimkan oleh Arduino berkisar dari 0 hingga 1023 untuk masing-masing trimmer, baik yang vertikal maupun yang horisontal. Pada kondisi normal, posisi trimmer ada di tengah karena tuas joystick tidak dibengkokkan ke samping. Dengan demikian, seharusnya data yang dikirim komputer pada joystick normal adalah 511/512 (dari 1023 / 2). Berikut adalah data dari kedua joystick setelah percobaan:

Posisi     | Kiri     | Kanan
-----------+----------+---------
Vertikal   | 508/509  | 498/499
Horisontal | 507/508  | 497/498

Nilai tersebut tidak stabil, misal joystick kiri untuk trimmer vertikal kadang nilainya 508 kadang 509, jadi berubah-ubah. Perubahan tersebut bisa jadi karena suplay tegangan yang tidak stabil atau mungkin ada masalah di hardware joysticknya. Kemudian perbedaan antara joystick yang kanan dan yang kiri cukup jauh. Hal tersebut bisa disebabkan akurasi dari resistansi trimmernya. Masing-msaing trimmer nilainya 10K (dan pasti tidak pas 10K bukan?). Kekurangakurasian alat juga berpengaruh pada performance dan kestabilan data dari joystick tersebut. Untuk kasus kita ini, maklum lah, sebab joystick bekas dan harganya pun tidak terlalu mahal. Hehe.

Nilai trimmer horisontal akan berubah 0 jika tuas joystick direbahkan full ke kiri dan menjadi 1023 jika direbahkan full ke kanan. Sedangkan untuk trimmer vertikal akan mengirimkan data 0 jika direbahkan full ke depan (atas) dan mengirimkan data 1023 jika direbahkan ke belakang (bawah). Berdasarkan karakteristik tersebut, jika posisi tuas joystik ada di pojok kanan-atas (kanan-depan), maka data yang dikirimkan adalah 0 semua. Kedua informasi ini membentuk seperti koordinat yang bisa digunakan untuk mengontrol sesuatu.

Saya masih mempelajari bagaimana menentukan titik tersebut. Tapi yang pasti, nanti akan dibutuhkan sebuah fungsi untuk menentukan posisi untuk merepresentasikan koordinat tersebut sehingga bisa digunakan untuk mengontrol sesuatu. Fungsi apa yang akan kita gunakan? Hal itu kita bahas pada tulisan lain di website ini. Selamat berkarya!

Written by ElangSakti
Arduino : Eksplorasi Cara Kerja Joystick
Bahasan: Ketika bersih-bersih kolong tempat tidur, eh ada joystick rusak. Tiba-tiba terpikir untuk mengetahui bagaimana cara kerja joystick terseb...
Published at Rabu, 29 Juli 2015, Updated at Rabu, 29 Juli 2015
Reviewed by dr. on
Rating: 4.7

18 komentar :

  1. Senang rasanya kalau mengerti arduino. Saya ingin membuat joystick menggunakan arduino, tapi saya tidak mengerti tentang arduino. Kalau mas bisa gak?

    BalasHapus
    Balasan
    1. bisa mas Haris. Joystiknya mau difungsikan untuk apa?

      Hapus
  2. bang admin, pin yang dari joy stick nya kan ada 8, kok di hubungkan ke arduino nya cuma 4 ya? kenapa bang?

    BalasHapus
    Balasan
    1. iya, yang dicoba hanya salah satu tuasnya saja. 2 pin untuk vcc dan gnd, 2 pin sisanya untuk posisi Vertikal dan Horisontal.

      Hapus
    2. mmm, kalau 2 tuasnya yg mau dicoba, apa 8 pin dari joystick nya harus dihubungkan ke arduino nya bang?

      Hapus
    3. OK bang! Makasih nih ilmu nya. manfaat banget (Y) !

      Hapus
  3. mas saya mau bikin tugas akhir dengan arduino ada yang bisa bantu gak yhaa ?? ezalavriza@gmail.com

    BalasHapus
  4. Min boleh tau Gk cara mentransfer data dari Joy Stick ke komputer itu cara Ny gmn?

    Thx Min

    BalasHapus
    Balasan
    1. Kalau pakai Arduino, bisa kirim via komunikasi Serial.

      Hapus
  5. Mau Bikin Project Steering Wheel Pake Arduino Uno Tapi Stuck Di "AtLibUsbDfu.dll Not Found" Jadi Pusing,
    Ada Solusi Kah min, Apa Admin Punya Project Steering Wheel Yg Lebih Simple,
    Mohon Bimbingan Nya
    THANK'S B4.. :D

    BalasHapus
  6. Tanya kang...ada stik dobel.dimana mau dibuat 1 stik yg utama saja.disitu ada 8 pin yg berhubungan dg stik 1nya dan 4 pin pisah buat usb nya.stelah di putus stik 1nya kog gak nyala ya.napa ya.tlng bantuannya

    BalasHapus
  7. Mas, saya mau konekkan joystick ke PCB keyboard PC,, biar tombol arah atas bawah dan kiri kanannya saya control lewat analog joystick. Bisa mas?

    BalasHapus
  8. Apakah penggunaan dual axis xy analog joystick bisa untuk fungsi kontrol pada mp3 player seperti gerakan vertikal untuk fungsi vol- dan vol+ sedangkan gerakan horizontal untuk fungsi previous dan next

    BalasHapus
    Balasan
    1. Bagaimana caranya mas, mau bereksperimen saya

      Hapus
    2. Kita belum pernah coba. Untuk eksperimen, buatlah program (vb, delphi, c++, atau lainnya) untuk menerima perintah dari arduino (data serial) dan mengonversinya ke vol+ vol- dst...

      Hapus