Archive for the ‘analogWriteResolution’ Category

Function analogWriteResolution() pada Arduino Programming Language

Wednesday, February 24th, 2021

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