Archive for the ‘analogWrite()’ Category

Function analogWrite() pada Arduino Programming Language

Wednesday, February 24th, 2021

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