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.
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.
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

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
// 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
}
Common Course Links
Common Course Files
Sumber daya & referensi
-
DokumentasiESP32 Tutorial 26/55- SunFounder doc page for joystickdocs.sunfounder.com
Berkas📁
Tidak ada file tersedia.