Unit 2.3: ESP32 Pulse-Width Modulation (PWM)
Mengontrol LED dengan PWM pada ESP32
Di bagian ini, kamu akan mempelajari cara meredupkan LED menggunakan kontroler PWM LED pada ESP32 dengan Arduino IDE. Kontroler PWM LED ESP32 memiliki 16 kanal independen yang dapat dikonfigurasi untuk menghasilkan sinyal PWM dengan frekuensi yang berbeda.
Langkah-langkah untuk Meredupkan LED dengan Arduino IDE:
- Pilih kanal PWM. Ada 16 kanal dari 0 hingga 15.
- Atur frekuensi sinyal PWM. Untuk LED, frekuensi 5000 Hz cukup baik.
- Atur resolusi siklus tugas (duty cycle) sinyal. Anda mempunyai resolusi dari 1 hingga 16 bit. Gunakan resolusi 8-bit yang memungkinkan pengaturan kecerahan LED dengan nilai dari 0 hingga 255.
- Tentukan GPIO mana yang akan mengeluarkan sinyal. Gunakan fungsi berikut untuk ini:
Fungsi ini menerima dua argumen: GPIO yang akan mengeluarkan sinyal dan kanal yang akan menghasilkan sinyal tersebut. - Untuk mengontrol kecerahan LED menggunakan PWM, gunakan fungsi berikut:
Contoh: Meredupkan LED
Berikut adalah daftar komponen yang dibutuhkan untuk merakit rangkaian:
- ESP32 S3 Dev Module Board
- LED 5mm
- Resistor 330 Ohm
- Breadboard
- Kabel jumper
Hubungkan LED ke ESP32 sesuai dengan diagram skematik. LED harus dihubungkan ke GPIO 16.
Kode
Buka Arduino IDE dan salin kode berikut:
Flowchart
Penjelasan Kode
- Tentukan pin yang dihubungkan ke LED. Dalam hal ini, LED dihubungkan ke GPIO 16.
- Atur properti PWM. Tentukan frekuensi sebesar 5000 Hz, pilih kanal 0 untuk menghasilkan sinyal, dan atur resolusi sebesar 8 bit.
- Di dalam fungsi `setup()`, konfigurasikan PWM LED dengan properti yang telah ditentukan menggunakan fungsi `ledcSetup()`, kemudian hubungkan kanal ke GPIO yang akan mengeluarkan sinyal menggunakan fungsi `ledcAttachPin()`.
- Di dalam fungsi `loop()`, variasikan duty cycle antara 0 dan 255 untuk mengubah kecerahan LED:
Menguji Contoh
Unggah kode ke ESP32-mu. Pastikan papan yang benar dan port COM telah dipilih. Lihat rangkaianmu, LED seharusnya meredup dan meningkat kecerahannya secara bertahap.
Dengan memahami langkah-langkah ini, kamu dapat mengontrol kecerahan LED menggunakan PWM pada ESP32.
Menggunakan Sinyal yang Sama pada GPIO yang Berbeda
Kamu dapat menggunakan sinyal yang sama dari kanal yang sama pada GPIO yang berbeda. Untuk melakukannya, cukup hubungkan GPIO tersebut ke kanal yang sama pada fungsi `setup()`.
Skematik
Berikut adalah daftar komponen yang kamu butuhkan untuk merakit rangkaian:
- ESP32 S3 Dev Module Board
- 3x LED 5mm
- 3x Resistor 330 Ohm
- Breadboard
- Kabel jumper
Tambahkan dua LED lagi ke rangkaianmu dengan mengikuti diagram skematik berikut:
Kode
Salin kode berikut ke Arduino IDE-mu:
Penjelasan Kode
Kode ini sama dengan yang sebelumnya tetapi dengan beberapa modifikasi. Kami menambahkan dua variabel baru untuk dua LED baru yang terhubung ke GPIO 17 dan GPIO 5:
Kemudian, di dalam fungsi `setup()`, tambahkan baris berikut untuk menghubungkan GPIO tersebut ke kanal 0:
Ini akan memastikan bahwa ketiga LED mendapatkan sinyal yang sama yang dihasilkan pada kanal 0 di ketiga GPIO tersebut.
Menguji Proyek
Unggah kode baru ke ESP32-mu. Pastikan papan yang benar dan port COM telah dipilih. Selanjutnya, lihat rangkaianmu:
Semua GPIO mengeluarkan sinyal PWM yang sama. Jadi, ketiga LED akan meningkat dan menurunkan kecerahannya secara bersamaan, menghasilkan efek yang tersinkronisasi.
Kesimpulan
Secara ringkas, pada bagian ini kamu telah mempelajari cara menggunakan PWM LED ESP32 dengan Arduino IDE untuk meredupkan LED. Konsep yang dipelajari dapat digunakan untuk mengontrol keluaran lain dengan PWM dengan mengatur properti yang sesuai pada sinyal.
Jika ada pertanyaan lebih lanjut atau penjelasan tambahan yang diperlukan, jangan ragu untuk bertanya pada grup telegram https://t.me/kodingindonesia.
Referensi
- Random Nerd Tutorials.