■analogWriteResolution関数
analogWriteResolution関数は、Arduino Due、Genuino、Arduino Zero、MKR1000用のアナログAPIの拡張で、analogWrite関数の解像度を設定します。
AVRベースのボードとの下位互換性を持たせる為、デフォルトは8ビット(0〜255の値)です。
■使用例
ArduinoIDEで使用するanalogWriteResolution関数の使い方は以下の通りです。
試しにこのプログラムをGenuino101で実行すると、A0の入力を読み取り、それをanalogReadResolution関数によって8,12,4ビットとにマッピングしたPWM信号を11,12,13ピンから出力します
またマッピングしたPWM出力値をシリアルモニター上に一定間隔で表示します。
void setup() { // シリアル接続を開く Serial.begin(9600); // デジタルピンを出力にする pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); } void loop() { // A0の入力を読み取り、それをPWMピンにマッピングします // LED付き int sensorVal = analogRead(A0); Serial.print("Analog Read) : "); Serial.print(sensorVal); // デフォルトのPWM分解能8ビット analogWriteResolution(8); analogWrite(11, map(sensorVal, 0, 1023, 0 , 255)); Serial.print(" , 8-bit PWM value : "); Serial.print(map(sensorVal, 0, 1023, 0 , 255)); // PWM分解能を12ビットに変更する // 完全な12ビット分解能はサポートされていません // 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)); // PWM分解能を4ビットに変更する 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); }
■構文
analogWriteResolution(bits)
■パラメータ
bits:analogWrite関数で使用される値の解像度(ビット単位)を指定します。
値の範囲は1〜32です。
ボードのハードウェア機能よりも高いまたは低い解像度を選択した場合、
analogWrite関数で使用される値が高すぎる場合は切り捨てられ、
低すぎる場合はゼロで埋められます。
■戻り値
有りません
■補足
analogWriteResolution関数の値をボードの能力よりも高い値に設定すると、ボードは余分なビットを破棄します。
たとえば、12ビットDACピンでdue with analogWriteResolution(16)を使用すると、analogWrite関数に渡される値の最初の12ビットのみが使用され、最後の4ビットは破棄されます。
analogWriteResolution関数の値をボードの能力よりも低い値に設定すると、不足しているビットにはハードウェアに必要なサイズを満たすためにパディング※1されます。
たとえば、12ビットのDACピンでdue with analogWriteResolution(8)を使用すると、ArduinoはanalogWrite関数で使用される8ビット値に4ビットを追加して、必要な12ビットを取得します。
※1:パディングとは、指定した桁数に満たない部分をゼロで埋める事
〇「Due」ハードウェア性能
AVRベースのボードと互換性を保つ様に、12ピンのデフォルトは8ビットPWMですが、これを12ビット分解能に変更する事が出来ます。
2ピン、12ビットDAC(デジタル・アナログ変換器)書き込み解像度を12に設定すると、0〜4095の値を持つanalogWrite関数を使用した完全なDAC分解能を活用したり、ロールオーバーせずにPWM信号を設定することができます。
〇「Zero」ハードウェア性能
AVRベースのボードのように、10ピンのデフォルトは8ビットPWMですが、これを12ビット分解能に変更することができます。
1ピン、10ビットDAC書き込み解像度を10に設定すると、0〜1023の値を持つanalogWrite関数を使用した完全なDAC解像度を利用できます。
〇「MKR1000」ハードウェア性能
AVRベースのボードのように、4ピンのデフォルトは8ビットPWMですが、これを12ビット分解能に変更する事が出来ます。
1ピン、10ビットDAC書き込み解像度を12に設定すると、0〜4095の値を持つanalogWrite関数を使用した完全なDAC解像度を利用できます