Search Code

Tutorial ESP32 26/55 - Menggunakan Joystick dengan Arduino Mengambil Tindakan | Kit IoT ESP32 SunFounder

Tutorial ESP32 26/55 - Menggunakan Joystick dengan Arduino Mengambil Tindakan | Kit IoT ESP32 SunFounder

Dalam tutorial ini, kita akan mempelajari cara menghubungkan joystick XY dengan mikrokontroler ESP32 dari SunFounder, sehingga kita dapat mendeteksi posisinya dan mengambil tindakan berdasarkan masukannya. Kita juga akan mengintegrasikan buzzer yang aktif ketika joystick digerakkan ke posisi tertentu. Kombinasi ini akan memungkinkan kita untuk membuat proyek interaktif yang merespons masukan pengguna secara real-time.

ESP32-26-xy-joystick-main

Joystick XY menyediakan dua keluaran analog yang sesuai dengan posisi X dan Y serta sebuah sakelar yang dapat ditekan untuk memicu suatu tindakan. Dengan membaca nilai dari joystick, kita dapat mengontrol berbagai elemen dalam proyek kita, seperti mengaktifkan buzzer atau menampilkan nilai di layar. Untuk memahami prosesnya sepenuhnya, pastikan untuk menonton video untuk wawasan tambahan (di video pada 00:00).

Penjelasan Perangkat Keras

Komponen utama untuk proyek ini meliputi mikrokontroler ESP32, joystick XY, dan buzzer. ESP32 adalah papan serbaguna yang mendukung Wi-Fi dan Bluetooth, menjadikannya ideal untuk proyek IoT. Joystick XY terdiri dari dua resistor variabel untuk sumbu X dan Y, serta sakelar tombol tekan untuk masukan tambahan.

skema_joystick
ESP32-26-xy-joystick-skema

Joystick mengeluarkan sinyal analog yang sesuai dengan posisinya, yang dibaca oleh pin analog ESP32. Tombol tekan memberikan sinyal digital saat ditekan. Buzzer terhubung ke pin keluaran digital pada ESP32, memungkinkannya untuk diaktifkan atau dinonaktifkan berdasarkan posisi joystick.

Detail Datasheet

Produsen SunFounder
Nomor bagian Modul Joystick XY
Tegangan Operasi 3,3 V – 5 V
Nilai Resistor 10 kΩ (setiap sumbu)
Arus Maksimum 20 mA
Jenis Sakelar Tombol tekan sesaat
Dimensi Kira-kira 50 mm x 50 mm

 

  • Pastikan joystick diberi daya dengan 3,3 V untuk kompatibilitas dengan ESP32.
  • Gunakan resistor pull-up untuk sakelar guna menghindari masukan mengambang.
  • Hubungkan keluaran analog ke pin ADC ESP32 (34 untuk X, 35 untuk Y).
  • Gunakan mekanisme debounce untuk sakelar guna mencegah pemicuan palsu.
  • Pantau tingkat tegangan untuk memastikan tetap dalam batas operasi yang aman.

Instruksi Pengkabelan

ESP32-26-xy-joystick-wiring

Untuk menghubungkan joystick ke ESP32, mulailah dengan menghubungkan pin ground dari joystick ke pin ground pada ESP32. Selanjutnya, hubungkan pin VCC joystick ke pin 3,3 V pada ESP32. Joystick memiliki dua pin keluaran analog: hubungkan keluaran sumbu X (ditandai sebagai VRX) ke pin 34 pada ESP32 dan keluaran sumbu Y (ditandai sebagai VRY) ke pin 35.

Untuk keluaran sakelar, hubungkan pin sakelar ke pin 33 pada ESP32. Pin ini akan membaca penekanan tombol sebagai masukan digital. Pastikan koneksi aman untuk menghindari masalah yang terputus-putus. Jika pengkabelan Anda berbeda dari video (di video pada 02:30), sesuaikan dengan mengikuti prinsip yang sama untuk koneksi analog dan digital.

Contoh Kode & Penjelasan

Dalam kode, kita mulai dengan mendefinisikan konstanta untuk pin joystick. Pengidentifikasi xAxis, yAxis, dan btn masing-masing diatur ke 34, 35, dan 33. Ini memudahkan untuk mereferensikan pin-pin ini di seluruh program.

#define xAxis 34
#define yAxis 35
#define btn 33

Dalam fungsi setup(), kita menginisialisasi komunikasi serial dan mengatur mode pin tombol ke input. Ini mempersiapkan ESP32 untuk membaca data dari joystick dan mengirimkannya ke monitor serial.

void setup() {
  Serial.begin(115200);
  pinMode(btn, INPUT);  
}

Di dalam loop(), kita membaca nilai analog untuk sumbu X dan Y joystick menggunakan analogRead() dan menyimpannya dalam xValue dan yValue. Status tombol dibaca menggunakan digitalRead() dan disimpan dalam btnValue. Terakhir, kita mencetak nilai-nilai ini ke monitor serial.

void loop() {
  int xValue = analogRead(xAxis);
  int yValue = analogRead(yAxis); 
  int btnValue = digitalRead(btn);
  
  Serial.printf("Nilai joystick adalah %d , %d , %d \n",xValue,yValue,btnValue);
  delay(300);  // Penundaan antara pembacaan
}

Loop ini terus memperbarui nilai, memberikan umpan balik real-time pada pergerakan joystick dan penekanan tombol. Untuk kode lengkap, silakan merujuk ke kode lengkap yang dimuat di bawah artikel.

Demonstrasi / Apa yang Diharapkan

Ketika pengaturan selesai dan kode diunggah, monitor serial akan menampilkan nilai X dan Y beserta status tombol. Saat Anda menggerakkan joystick, nilai akan berubah sesuai, mencerminkan posisinya. Menekan tombol akan mengalihkan statusnya antara tinggi dan rendah.

Kesalahan umum termasuk pemasangan kabel yang salah, yang dapat menyebabkan input mengambang atau tidak ada respons dari joystick. Pastikan pin yang benar digunakan dan resistor pull-up diterapkan untuk sakelar. Tonton video untuk demonstrasi praktis dari perilaku-perilaku ini (di video pada menit 13:00).

Stempel Waktu Video

  • 00:00 Mulai
  • 1:47 Pengenalan XY Joystick
  • 7:32 Mengukur nilai Joystick
  • 8:40 Penjelasan pemasangan kabel
  • 11:06 Penjelasan kode Arduino untuk Joystick dengan ESP32
  • 14:43 Memilih papan ESP32 dan port COM di Arduino IDE
  • 16:24 Demonstrasi penggunaan sederhana Joystick
  • 19:20 Mendeteksi posisi kode joystick dengan buzzer
  • 21:16 Demonstrasi mendeteksi posisi

Gambar

joystick_schematic
joystick_schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-main
ESP32-26-xy-joystick-main
826-ESP32 Tutorial 26/55- Arduino code for XY Joystick
Bahasa: C++
// Define constants for the x and y axis and the button pins
#define xAxis 34
#define yAxis 35
#define btn 33


void setup() {
  // Initialize serial communication at 115200 bits per second:
  Serial.begin(115200);

  // Set the mode of the button pin to input
  pinMode(btn, INPUT);  
}

void loop() {
  // Read the analog value for x,y axis
  int xValue = analogRead(xAxis);
  int yValue = analogRead(yAxis); 

  // Read the digital value from the button pin
  int btnValue = digitalRead(btn);
  
  // print out the values
  Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
  
  delay(300);  // Delay between reads
}

Sumber daya & referensi

Berkas📁

Tidak ada file tersedia.