PWM Experiment with LED

--

Halo semua perkenalkan saya Muhammad Rifqi Riansyah Matondang NIM 18220005 Mahasiswa semester 4 jurusan Sistem dan Teknologi Informasi. Pada kesempatan kali ini saya akan mencoba menjelaskan eksperimen menggunakan PWM untuk lampu LED.

Artikel ini merupakan serangkaian artikel eksperimen ESP32. Jika anda belum membaca artikel sebelumnya, anda dapat membacanya pada link berikut https://medium.com/@18220005/oled-experiment-with-esp32-8f9ebb78b7d

Persiapan

Berikut adalah alat dan bahan yang perludipersiapkan:

  1. 1 unit ESP32
  2. 3 unit lampu LED
  3. 3 unit resistor 330ohm
  4. 4 unit kabel jumper male-to-male

PWM

PWM atau pulse width modulation adalah suatu teknik modulasi yang mengubah lebar pulsa (pulse width) dengan nilai frekuensi dan amplitudo yang tetap. PWM ini digunakan untuk menghasilkan sinyal analog dari perangkat digital seperti mikrokontroler. Sinyal tersebut dapat diatur dengan melakukan modifikasi pada duty cycle. Duty cycle adalah siklus ON dan OFF dari PWM. Semakin lama ON time pada duty cycle maka sinyal akan lebih besar. Semakin sedikit ON time pada duty cycle maka sinyal akan lebih kecil. Pada percobaan kali ini saya akan menggunakan PWM untuk mengatur output dari lampu LED.

Rangkaian

gambar diambil dari https://randomnerdtutorials.com/esp32-pwm-arduino-ide/

Pada rangkaian di atas, GND ESP32 dihubungkan dengan terminal negatif dari breadboard. GPIO 5 , GPIO 17, GPIO 16 digunakan dalam percobaan ini sebagai GPIO output lampu LED. Kabel GPIO tersebut dihubungkan pada anode LED dan katoda LED dihubungkan dengan resistor 330 ohm yang terhubung dengan terminal negatif.

Code

Berikut adalah code yang digunakan dalam percobaan ini:

// the number of the LED pin
const int ledPin = 16; // 16 corresponds to GPIO16
const int ledPin2 = 17; // 17 corresponds to GPIO17
const int ledPin3 = 5; // 5 corresponds to GPIO5

// setting PWM properties
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8;

void setup(){
// configure LED PWM functionalitites
ledcSetup(ledChannel, freq, resolution);

// attach the channel to the GPIO to be controlled
ledcAttachPin(ledPin, ledChannel);
ledcAttachPin(ledPin2, ledChannel);
ledcAttachPin(ledPin3, ledChannel);
}

void loop(){
// increase the LED brightness
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}

// decrease the LED brightness
for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
}

Dilakukan inisialiasi frequency dengan value 5000hz dan menggunakna chanel 0 serta resolution 8 bit untuk meng-setup PWM signal.

Mendefinisikan PWM setup di dalam setup() sesuai dengan properti yang telah di define di atas.

Mengassign setup ke setiap GPIO pin.

Melakukan loop duty cycle antara 0 dan 255 untuk menambahkan brightness dari LED

Melakukan loop duty cycle untuk mengecilkan brightness dari LED

Setelah mengikuti langkah di atas, upload code ke ESP32 dan amati hasilnya.

Selesai

Selamat! Anda telah berhasil melakukan eksperimen Memanfaatkan PWM untuk LED pada ESP32. Terima kasih telah membaca tutorial ini, semoga perjalanan ESP32 kalian menyenangkan!

--

--