Cari Kode

Pelajaran 13/31: Menggunakan Joystick XY dengan Arduino dan membunyikan buzzer dengan Gerakan Joystick | Robojax

Pelajaran 13/31: Menggunakan Joystick XY dengan Arduino dan membunyikan buzzer dengan Gerakan Joystick | Robojax

Dalam pelajaran ini, kita menjelajahi modul joystick XY dan cara menghubungkannya dengan Arduino untuk mendeteksi gerakan arah dan penekanan tombol. Perangkat input serbaguna ini berisi dua potensiometer (satu untuk sumbu X dan satu untuk sumbu Y) dan sebuah tombol tekan, memungkinkan Anda menangkap rentang gerakan 360 derajat penuh beserta aksi klik. Selain sekadar membaca nilai mentah, kita akan mendemonstrasikan cara memicu aksi—seperti menyalakan buzzer—saat joystick digerakkan ke posisi tertentu. Prinsip ini menjadi fondasi untuk banyak proyek interaktif.

sunfounder-13-JoyStick-2

Panduan ini sangat cocok untuk membuat:

  • Kontrol jarak jauh dua sumbu untuk mobil robot atau dudukan kamera pan-tilt.
  • Kontroler game kustom untuk PC atau perangkat seluler.
  • Sistem navigasi menu untuk layar LCD atau OLED.
  • Kontrol kecepatan dan arah motor yang presisi untuk aplikasi industri atau hobi.
  • Sistem alarm interaktif di mana posisi joystick tertentu mengaktifkan sirine atau peringatan.

Perangkat Keras dan Komponen

Untuk mengikuti proyek ini, Anda memerlukan komponen berikut. Kit spesifik yang digunakan dalam video adalah kit Arduino 3-in-1 SunFounder, tetapi komponen-komponen ini banyak tersedia secara terpisah.

  • Arduino Uno (atau papan lain yang kompatibel)
  • Modul Joystick XY
  • Buzzer Pasif
  • Kabel Jumper
  • Kabel USB untuk pemrograman dan daya
LB-LR0001_Dual-axis_XY_Joystick_Module

Memahami Modul Joystick XY

Joystick XY adalah perangkat input mandiri. Seperti dijelaskan dalam video (di video pada 01:20), perangkat ini menggabungkan dua potensiometer 10k ohm yang disusun tegak lurus. Menggerakkan stik di sepanjang sumbu X memutar satu potensiometer, sementara menggerakkannya di sepanjang sumbu Y memutar potensiometer lainnya. Ini memungkinkan Arduino membaca tegangan analog untuk setiap sumbu, mewakili posisi stik yang presisi. Modul ini juga menyertakan tombol tekan sesaat yang aktif saat stik ditekan lurus ke bawah.

Joystick-Module-Internal-Structure

Berikut rincian pin-pinnya:

  • GND: Terhubung ke ground (0V) Arduino.
  • VCC: Terhubung ke catu daya 5V Arduino.
  • VRX: Output analog untuk posisi sumbu X.
  • VRY: Output analog untuk posisi sumbu Y.
  • SW: Output digital untuk tombol tekan (aktif rendah).

Video juga menunjukkan bahwa dua potensiometer internal dihubungkan secara paralel antara VCC dan GND, menghasilkan resistansi total sekitar 5k ohm, yang merupakan pembacaan normal untuk modul ini (di video pada 04:30).

Panduan Pengkabelan

sunfounder-13_xy_joystick_wiring_bb

Pengkabelan untuk proyek ini cukup sederhana. Video menunjukkan diagram pengkabelan dari dokumentasi SunFounder, tetapi kita akan menghubungkan joystick langsung ke pin Arduino seperti yang dijelaskan. Buzzer ditambahkan untuk bagian aksi dari proyek ini.

Berikut koneksi yang dibuat dalam video (di video pada 06:24):

  • Joystick GNDArduino GND (Kabel hitam)
  • Joystick VCCArduino 5V (Kabel merah)
  • Joystick VRXArduino A0 (Kabel kuning)
  • Joystick VRYArduino A1 (Kabel hijau)
  • Joystick SWArduino Pin 8 (Kabel biru)
  • Buzzer Positif (Pin Panjang)Arduino Pin 2
  • Buzzer Negatif (Pin Pendek)Arduino GND

Penjelasan Kode

Kode yang disediakan dirancang untuk membaca posisi joystick dan mengaktifkan buzzer saat kondisi tertentu terpenuhi. Bagian kunci yang dapat Anda konfigurasi berada di bagian atas sketsa.

Pertama, definisi pin diatur. Anda dapat mengubahnya agar sesuai dengan pengkabelan spesifik Anda:

const int xPin = A0;  //tempat VRX terhubung
const int yPin = A1;  //tempat VRY terhubung
const int swPin = 8;  //tempat SW terhubung
const int alarmPin=2;//ke buzzer

Selanjutnya, variabel global dideklarasikan untuk menyimpan status joystick. Variabel-variabel ini diperbarui setiap kali fungsi readJoystick() dipanggil.

int xValue;//untuk menyimpan nilai x
int yValue;//untuk menyimpan nilai y
int swValue;//untuk menyimpan nilai sakelar

Dalam fungsi setup(), pin sakelar dikonfigurasi dengan resistor pull-up internal. Ini adalah langkah penting karena menghilangkan kebutuhan akan resistor eksternal. Dengan mengaturnya ke INPUT_PULLUP, pin akan membaca HIGH secara default dan menjadi LOW saat tombol ditekan.

pinMode(swPin, INPUT_PULLUP);  //atur pin SW ke INPUT

Logika inti ada di dalam loop(). Fungsi ini memanggil fungsi khusus readJoystick() untuk mendapatkan data terbaru. Kemudian, fungsi ini memeriksa suatu kondisi: jika nilai sumbu X lebih besar dari 600 dan nilai sumbu Y kurang dari 300, buzzer akan dinyalakan. Anda dapat mengubah nilai ambang batas ini untuk menentukan "zona aktif" yang berbeda untuk joystick. alarmPin diatur ke HIGH untuk mengaktifkan buzzer dan sebuah pesan dicetak ke Serial Monitor.

if(xValue >600 && yValue <300)
{
  digitalWrite(alarmPin, HIGH);
  Serial.print("Alarm X:");
  Serial.print(xValue);
  Serial.print(" Y:");
  Serial.println(yValue);
}else{
  digitalWrite(alarmPin, LOW);
  // ... kode untuk mencetak nilai saat alarm mati
}

Terakhir, fungsi khusus readJoystick() didefinisikan. Fungsi ini membaca nilai analog dari pin X dan Y serta status digital dari sakelar, lalu menyimpannya ke dalam variabel global. Pendekatan modular ini menjaga loop utama tetap bersih dan terorganisir.

void readJoystick()
{
  xValue =analogRead(xPin);//membaca nilai xPin
  yValue =analogRead(yPin);//membaca yPin
  swValue =digitalRead(swPin);//membaca sakelar 
}

Proyek Langsung dan Demonstrasi

Setelah kode diunggah, Serial Monitor dapat dibuka untuk mengamati nilai mentah. Awalnya, dengan joystick di tengah, nilai X dan Y akan berada di sekitar 512, yang merupakan titik tengah dari rentang 0-1023. Menekan joystick ke bawah akan mengubah nilai sakelar dari 1 menjadi 0 (dalam video pada 10:15).

Menggerakkan joystick ke posisi ekstrem akan menunjukkan rentang penuh: menggerakkannya sepenuhnya ke kanan akan menunjukkan nilai X sebesar 1023, dan sepenuhnya ke kiri akan menunjukkan 0. Demikian pula, menggerakkannya ke atas dan ke bawah akan mengubah nilai Y antara 0 dan 1023 (dalam video pada 10:37).

Demonstrasi kemudian menunjukkan bagian aksi dari proyek ini. Ketika joystick digerakkan ke sudut kanan atas (di mana X > 600 dan Y < 300), buzzer akan berbunyi, dan Serial Monitor akan mencetak pesan "Alarm". Menggerakkannya menjauh dari zona tersebut akan mematikan buzzer. Ini membuktikan bahwa Anda dapat menggunakan posisi joystick untuk mengendalikan perangkat keluaran, yang dapat diperluas untuk mengendalikan relay, LED, atau motor untuk berbagai aplikasi.

Bab

  • [00:00] Pengenalan Proyek XY Joystick
  • [01:20] Memahami Perangkat Keras dan Komponen Internal
  • [03:33] Skematik Modul dan Pengukuran Resistansi
  • [05:51] Menghubungkan Joystick ke Arduino
  • [07:00] Menyiapkan Kode dan Mengaktifkan Resistor Pull-up
  • [09:23] Mengunggah Kode dan Menguji Nilai Mentah
  • [12:21] Mengambil Tindakan: Mengendalikan Buzzer dengan Posisi Joystick
  • [16:02] Demonstrasi Langsung Sistem Alarm

Gambar

Sunfounder car assembled
Sunfounder car assembled
LB-LR0001_Dual-axis_XY_Joystick_Module
LB-LR0001_Dual-axis_XY_Joystick_Module
sunfounder-13-JoyStick-1
sunfounder-13-JoyStick-1
sunfounder-13-JoyStick-2
sunfounder-13-JoyStick-2
Joystick-Module-Internal-Structure
Joystick-Module-Internal-Structure
sunfounder-13_xy_joystick_wiring_bb
sunfounder-13_xy_joystick_wiring_bb
922-Lesson 13/31: How to read position and values of X-Y Joystick
Bahasa: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Sumber daya & referensi

Berkas📁

Pustaka Arduino (zip)

Panduan Pengguna