# Hack Your Skills! to be Professional Mechatronics
Arduino : Eksplorasi Cara Kerja Joystick
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 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.
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.
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.
Nama-nama pin out PCB Joystick |
Berikut ini adalah jalur rangkaian joystick yang saya dapatkan setelah mempelajarinya skema yang tertera pada PCB.
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!
Top Artikel :
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
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
Langganan:
Posting Komentar
(
Atom
)
Senang rasanya kalau mengerti arduino. Saya ingin membuat joystick menggunakan arduino, tapi saya tidak mengerti tentang arduino. Kalau mas bisa gak?
BalasHapusbisa mas Haris. Joystiknya mau difungsikan untuk apa?
Hapusbang admin, pin yang dari joy stick nya kan ada 8, kok di hubungkan ke arduino nya cuma 4 ya? kenapa bang?
BalasHapusiya, yang dicoba hanya salah satu tuasnya saja. 2 pin untuk vcc dan gnd, 2 pin sisanya untuk posisi Vertikal dan Horisontal.
Hapusmmm, kalau 2 tuasnya yg mau dicoba, apa 8 pin dari joystick nya harus dihubungkan ke arduino nya bang?
HapusBetul.
HapusOK bang! Makasih nih ilmu nya. manfaat banget (Y) !
Hapusmas saya mau bikin tugas akhir dengan arduino ada yang bisa bantu gak yhaa ?? ezalavriza@gmail.com
BalasHapusMin boleh tau Gk cara mentransfer data dari Joy Stick ke komputer itu cara Ny gmn?
BalasHapusThx Min
Kalau pakai Arduino, bisa kirim via komunikasi Serial.
HapusMau Bikin Project Steering Wheel Pake Arduino Uno Tapi Stuck Di "AtLibUsbDfu.dll Not Found" Jadi Pusing,
BalasHapusAda Solusi Kah min, Apa Admin Punya Project Steering Wheel Yg Lebih Simple,
Mohon Bimbingan Nya
THANK'S B4.. :D
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
BalasHapusMas, saya mau konekkan joystick ke PCB keyboard PC,, biar tombol arah atas bawah dan kiri kanannya saya control lewat analog joystick. Bisa mas?
BalasHapusApakah 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
BalasHapussepertinya bisa.
HapusBagaimana caranya mas, mau bereksperimen saya
HapusKita 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...
HapusBagaimana gan?
BalasHapus