Deskripsi
Menuliskan nilai analog pada pin PWM dapat digunakan untuk mengatur terang gelap LED ataupun kecepatan motor. Saat fungsi ini dijalankan maka signal berbentuk gelombang kotak akan dibangkitkan pada pin PWM Arduino Board dengan duty cycle tertentu. Signal ini akan terus muncul hingga perintah analogWrite() selanjutnya atau digitalRead() atau digitalWrite() pada pin yang sama dieksekusi lagi.
Berikut ini adalah tabel pin PWM vs PWM Frequency vs jenis Arduino Board
* Bukan hanya PWM saja melainkan pada bagian yang bertanda ini yaitu MKR Boards, MKR1000 Wifi, Zero, Nano 33 IOT akan membangkitkan output yang betul-betul analog saat analogWrite() dilakukan pada pin DAC0 (A0).
** Bukan hanya PWM saja melainkan pada bagian yang bertanda ini yaitu Arduino Due akan membangkitkan output yang betul-betul analog saat analogWrite() dilakukan pada pin DAC0 (A0) dan DAC1 (A1).
Anda tidak perlu menjalankan fungsi pinMode() karena pin tersebut akan otomatis berfungsi sebagai output. Fungsi ini juga tidak akan berpengaruh pada pin Analog input ataupun fungsi analogRead ()
PWM Output pada pin 3 Arduino Uno
Syntax
analogWrite(pin, value)
Parameters
pin: Nomor pin dari Arduino Board dengan tipe data int
value: Duty cycle dengan range 0 – 255 di mana 0 adalah OFF dan 255 adalah ON. Tipe data yang digunakan adalah int
Returns
Tidak ada returns
Contoh Program
Atur kecerahan LED berdasarkan nilai yang diperoleh dari potentiometer.
int ledPin = 9; // LED terhubung pada digital pin 9
int analogPin = 3; // potentiometer terhubung pada analog pin 3
int val = 0; // variable untuk menyimpan hasil pembacaan
// pin analog
void setup() {
pinMode(ledPin, OUTPUT); // atur pin sebagai output
}
void loop() {
val = analogRead(analogPin); // baca pin analog dan simpan di
// variabel val
analogWrite(ledPin, val / 4); // Nilai yang dibaca dari analog
// pin dengan range 0 - 1023
// dikonversi menjadi 0 - 255
// dengan dibagi 4
}
Catatan dan Peringatan
Output PWM yang dibangkitkan pada pin 5 atau pin 6 mungkin saja dapat memiliki nilai yang lebih besar dari duty cycle yang diharapkan akibat adanya fungsi milis () atau delay() di mana menggunakan timer yang sama dengan output PWM. Hal ini dapat mengakibatkan pada saat nilai duty cycle 0 tidak membuat signal PWM betul-betul OFF pada pin 5 dan 6
Terjemahan dan edit dari https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/
DELTA ELECTRONIC
Paulus Andi Nalwan, ST