Cara Memprogram Joystik KY-023 Pada ESP32

Cara Memprogram Joystik KY-023 Pada ESP32

Joystick KY-023 adalah modul joystick analog dua sumbu (2-axis) yang dirancang untuk menyediakan input posisi (gerakan) dan juga memiliki tombol tekan tambahan.Berikut ini adalah code untuk memprogramnya :

#include <Arduino.h>


const int pinX_joystik = A0;
const int pinY_joystik = A1;




void setup()
{
Serial.begin(9600);
pinMode(pinX_joystik, INPUT);
pinMode(pinY_joystik, INPUT);

}
void loop(){
int nilaiX_joystik = analogRead(pinX_joystik);
int nilaiY_joystik = analogRead(pinY_joystik);
Serial.print("Nilai X: ");
Serial.print(nilaiX_joystik);
Serial.print("	Nilai Y: ");
Serial.println(nilaiY_joystik);


}

Berikut ini adalah penjelasan dari kode di atas :

1. Inklusi Library

#<strong>include</strong> <Arduino.h>
  • #include <Arduino.h>: Ini adalah library standar yang wajib ada di setiap program Arduino. Library ini menyediakan fungsi-fungsi dasar yang kita gunakan, seperti Serial.begin(), pinMode(), analogRead(), dan Serial.print()/println().

2. Deklarasi Variabel Global

const int pinX_joystik = A0;
const int pinY_joystik = A1;
  • const int pinX_joystik = A0;: Baris ini mendeklarasikan sebuah variabel konstanta (const int) bernama pinX_joystik dan memberikan nilai A0 padanya. A0 merujuk pada pin analog 0 di papan Arduino. Pin ini akan digunakan untuk membaca nilai posisi sumbu X dari joystick. Menggunakan const berarti nilai variabel ini tidak dapat diubah selama program berjalan, yang merupakan praktik bagus untuk pin hardware.
  • const int pinY_joystik = A1;: Serupa dengan di atas, ini mendeklarasikan pinY_joystik dengan nilai A1, yang akan terhubung ke pin output sumbu Y dari joystick.

3. Fungsi setup()

void setup()
{
  Serial.begin(9600);
  pinMode(pinX_joystik, INPUT);
  pinMode(pinY_joystik, INPUT);
}
  • Serial.begin(9600);: Fungsi ini menginisialisasi komunikasi serial pada baud rate 9600. Ini sangat penting agar Arduino dapat mengirimkan data pembacaan joystick ke komputer Anda, yang kemudian bisa Anda lihat melalui Serial Monitor di Arduino IDE.
  • pinMode(pinX_joystik, INPUT);: Fungsi ini mengkonfigurasi pin analog yang telah kita definisikan (pinX_joystik, yaitu A0) sebagai INPUT. Ini memberitahu Arduino bahwa pin ini akan digunakan untuk membaca sinyal tegangan yang datang dari sumbu X joystick.
  • pinMode(pinY_joystik, INPUT);: Sama seperti di atas, ini mengkonfigurasi pinY_joystik (A1) sebagai INPUT untuk membaca sinyal tegangan dari sumbu Y joystick.

4. Fungsi loop()

void loop(){
  int nilaiX_joystik = analogRead(pinX_joystik);
  int nilaiY_joystik = analogRead(pinY_joystik);

  Serial.print("Nilai X: ");
  Serial.print(nilaiX_joystik);
  Serial.print("\tNilai Y: ");
  Serial.println(nilaiY_joystik);
}
  • int nilaiX_joystik = analogRead(pinX_joystik);: Ini adalah inti dari pembacaan joystick.
    • analogRead(pinX_joystik): Fungsi ini membaca nilai tegangan analog dari pin yang ditentukan (pinX_joystik, yaitu A0). Mikrokontroler Arduino (kebanyakan ATmega328P seperti pada Uno) memiliki ADC (Analog-to-Digital Converter) 10-bit. Ini berarti ia akan mengkonversi tegangan input (misalnya dari 0V hingga 5V) menjadi nilai digital dalam rentang 0 hingga 1023.
    • Nilai yang dibaca ini (antara 0-1023) kemudian disimpan dalam variabel integer nilaiX_joystik.
  • int nilaiY_joystik = analogRead(pinY_joystik);: Mirip dengan sumbu X, baris ini membaca nilai tegangan analog dari pin pinY_joystik (A1) dan menyimpan hasilnya (0-1023) dalam variabel nilaiY_joystik.
  • Serial.print("Nilai X: ");: Mencetak teks “Nilai X: ” ke Serial Monitor. Serial.print() tidak menambahkan baris baru setelah mencetak.
  • Serial.print(nilaiX_joystik);: Mencetak nilai numerik dari nilaiX_joystik (0-1023) ke Serial Monitor, melanjutkan di baris yang sama.
  • Serial.print("\tNilai Y: ");: Mencetak tab (\t) untuk memberikan jarak, diikuti dengan teks “Nilai Y: ” ke Serial Monitor.
  • Serial.println(nilaiY_joystik);: Mencetak nilai numerik dari nilaiY_joystik (0-1023) ke Serial Monitor, dan kemudian println() akan menambahkan baris baru, sehingga pembacaan berikutnya akan dimulai di baris baru.

Cara Kerja Keseluruhan

Secara sederhana, kode ini melakukan hal berikut:

  1. Persiapan (setup): Mengaktifkan komunikasi serial dan mengatur pin analog A0 dan A1 Arduino sebagai pin input untuk membaca sinyal analog dari joystick.
  2. Pengulangan (loop): Terus-menerus:
    • Membaca nilai tegangan dari sumbu X joystick (yang akan dikonversi menjadi nilai 0-1023).
    • Membaca nilai tegangan dari sumbu Y joystick (juga dikonversi menjadi 0-1023).
    • Mencetak kedua nilai ini ke Serial Monitor dalam format “Nilai X: [nilai_X] Nilai Y: [nilai_Y]”.

Ketika joystick berada di posisi tengah, Anda biasanya akan melihat nilai sekitar 511-512 untuk kedua sumbu (setengah dari 1023). Jika Anda menggerakkan joystick:

  • Ke kanan, nilai X akan mendekati 1023.
  • Ke kiri, nilai X akan mendekati 0.
  • Ke atas, nilai Y akan mendekati 1023.
  • Ke bawah, nilai Y akan mendekati 0.

Kode ini sangat mendasar dan hanya menampilkan nilai mentah. Dalam aplikasi nyata, nilai-nilai ini kemudian akan diproses lebih lanjut (misalnya, dipetakan ke rentang yang berbeda, digunakan untuk mengontrol motor, atau sebagai input game).

untuk diskusi bisa kontak dibawah ini :

Sosial media :

Apa itu ESP32?