Pada artikel ini, Arduino Indonesia akan membahas tentang cara menghasilkan sinyal PWM dengan papan ESP32 dan ESP8266 menggunakan firmware MicroPython. Sebagai contoh, kami akan meredupkan kecerahan LED dengan mengubah duty cycle secara bertahap.
Rangkaian
Untuk contoh ini, hubungkan sebuah LED ke papan ESP Anda. Kami akan menghubungkan LED ke GPIO 5 di kedua papan, tetapi Anda dapat memilih pin PWM lain yang sesuai. Lihat pin terbaik yang dapat digunakan di Panduan Referensi Pinout ESP32 kami.
Komponen yang Diperlukan
Berikut daftar komponen untuk merakit rangkaian:
- ESP32 atau ESP8266
- LED 5mm
- Resistor 330 Ohm
- Breadboard
- Kabel jumper
Baca juga: Input dan Output Digital ESP32/ESP8266 dengan MicroPython
Diagram Rangkaian – ESP32
Gunakan diagram skematik berikut sebagai panduan jika Anda menggunakan papan ESP32:
Diagram Rangkaian – ESP8266
Gunakan diagram skematik berikut sebagai panduan jika Anda menggunakan papan ESP8266:
Kode Program
Berikut ini kode program yang mengubah kecerahan LED seiring waktu dengan meningkatkan duty cycle. Kode program ini kompatibel dengan ESP32 dan ESP8266.
from machine import Pin, PWM
from time import sleep
frequency = 5000
led = PWM(Pin(5), frequency)
while True:
for duty_cycle in range(0, 1024):
led.duty(duty_cycle)
sleep(0.005)
Penjelasan Kode
Untuk membuat pin PWM, impor kelas PWM beserta kelas `Pin` dari modul machine.
from machine import Pin, PWM
Kemudian, buat objek PWM bernama led.
led = PWM(Pin(5), frequency)
Untuk membuat objek PWM, Anda perlu memberikan parameter: pin yang terhubung, frekuensi sinyal, dan duty cycle.
- Frekuensi: Dapat bernilai antara 0 dan 78125. Frekuensi 5000 Hz cocok digunakan untuk mengontrol kecerahan LED.
- Duty Cycle: Dapat bernilai antara 0 dan 1023. Nilai 1023 setara dengan duty cycle 100% (kecerahan penuh), dan 0 setara dengan 0% (LED padam).
Kami akan mengatur duty cycle di dalam perulangan while, jadi parameter duty cycle tidak perlu diberikan saat inisialisasi. Jika tidak diatur, nilai default duty cycle adalah 0.
Untuk mengatur duty cycle, gunakan metode duty() pada objek PWM dan berikan duty cycle sebagai argumen:
led.duty(duty_cycle)
Di dalam perulangan while, kami membuat perulangan `for` yang meningkatkan duty cycle sebanyak 1 di setiap iterasi dengan jeda 5 ms di antara setiap perubahan.
for duty_cycle in range(0, 1024):
led.duty(duty_cycle)
sleep(0.005)
Fungsi range() memiliki sintaks berikut:
range(start, stop, step)
- Start: Angka yang menentukan posisi awal. Kami ingin mulai dari duty cycle 0.
- Stop: Angka yang menentukan posisi berhenti (nilai ini tidak termasuk). Duty cycle maksimum adalah 1023. Karena kami menambah 1 setiap perulangan, nilai terakhir harus 1023+1, jadi kami gunakan 1024.
- Step: Bilangan bulat yang menentukan penambahan. Secara default, penambahannya adalah 1.
Di setiap perulangan for, kami mengatur duty cycle LED ke nilai duty_cycle saat ini:
led.duty(duty_cycle)
Setelah itu, variabel duty_cycle bertambah 1.
Demonstrasi
Simpan kode ke papan ESP Anda menggunakan Thonny IDE atau uPyCraft IDE. LED yang terhubung ke GPIO 5 akan semakin terang secara bertahap.
Baca juga: MicroPython ESP32 & ESP8266 - Cara Menggunakan Sensor BME280 (Tekanan, Suhu, Kelembaban)
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino



0 on: "Tutorial MicroPython ESP32/ESP8266 - PWM untuk Mengatur Kecerahan LED "