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