Function analogWriteResolution() pada Arduino Programming Language

Deskripsi

Fungsi ini digunakan untuk mengatur resolusi dari fungsi analogWrite() di mana pada kondisi standard adalah 8 bit (nilai dari 0 – 255).  Namun untuk beberapa Arduino Board ini ada beberapa perbedaan

Arduino Due:

  • Terdapat 12 pin dengan 8 bit PWM pada kondisi standardnya. Resolusi ini dapat diubah menjadi 12 bit
  • Terdapat 2 pin DAC (Digital to Analog Converter)

Dengan mengubah resolusi menjadi 12 maka pada saat digunakan fungsi analogWrite() akan terdapat nilai mulai dari 0 – 4095 pada DAC atau terdapat signal PWM yang lebih halus.

Arduino Zero:

  • Terdapat 10 pin dengan 8 bit PWM pada kondisi standardnya. Resolusi ini dapat diubah menjadi 12 bit
  • Terdapat 1 pin DAC (Digital to Analog Converter)

Dengan mengubah resolusi menjadi 10 maka pada saat digunakan fungsi analogWrite() akan terdapat nilai mulai dari 0 – 4095 pada DAC

MKR Family:

  • Terdapat 4 pin dengan 8 bit PWM pada kondisi standardnya. Resolusi ini dapat diubah menjadi 12 bit
  • Terdapat 1 pin DAC (Digital to Analog Converter)

Dengan mengubah resolusi menjadi 12 maka pada saat digunakan fungsi analogWrite() akan terdapat nilai mulai dari 0 – 4095 pada PWM. Pengaturan 10 bit pada DAC akan mengakibatkan DAC memiliki range 0 – 1023.

Syntax

AnalogWriteResolution(bits)

Parameters

bits: merupakan resolusi dalam bits untuk nilai yang digunakan pada fungsi analogWrite()

Returns

Tidak ada return

Contoh Program

void setup() {
  // buka koneksi serial 9600 bps
  Serial.begin(9600);
  // ubah digital pin berikut menjadi Output
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  // baca input analog A0 dan dimap agar dapat digunakan 
  // untuk mengatur nilai PWM

  int sensorVal = analogRead(A0);
  Serial.print("Analog Read) : ");
  Serial.print(sensorVal);

  // the default PWM resolution
  analogWriteResolution(8);
  analogWrite(11, map(sensorVal, 0, 1023, 0, 255));
  Serial.print(" , 8-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 255));

  // Rubah PWM resolution ke 12 bits
  // resolusi 12 bit ini hanya berlaku pada Arduino Due

  analogWriteResolution(12);
  analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
  Serial.print(" , 12-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 4095));

  // Ubah resolusi PWM menjadi 4 bits
  analogWriteResolution(4);
  analogWrite(13, map(sensorVal, 0, 1023, 0, 15));
  Serial.print(", 4-bit PWM value : ");
  Serial.println(map(sensorVal, 0, 1023, 0, 15));

  delay(5);
}

Catatan dan Peringatan

Apabila anda mengatur fungsi analogWriteResolution() dengan nilai di luar kemampuan Arduino Board yang digunakan maka Arduino akan mengabaikan bit-bit ekstranya. Sebagai contoh pada fungsi analogWriteResolution(16) yang digunakan pada Arduino Due yang hanya memiliki 12 bit DAC, maka 4 bit ekstranya akan diabaikan.

Apabila anda mengatur fungsi analogWriteResolution() dengan nilai di bawah kemampuan Arduino Board maka bit-bit yang hilang akan diisi dengan nilai 0 atau logika 0. Contoh pada eksekusi fungsi analogWriteResolution(8) di DAC 12 bit, maka Arduino Board akan menambahkan 4 bit logika 0 agar tetap diperoleh 12 bit output.

Terjemahan dan edit dari https://www.arduino.cc/reference/en/language/functions/zero-due-mkr-family/analogwriteresolution/

DELTA ELECTRONIC

Paulus Andi Nalwan, ST

Tags: , , , , , ,

Leave a Reply