説明
analogReadResolution()は、Zero、Due、MKRfamily、Nano 33 (BLE と IoT)、PortentaのアナログAPIの拡張機能です。
analogRead()が返す値のサイズ(ビット)を設定します。AVRベースのボードとの後方互換性のため、デフォルトは10ビット(0~1023)です。
Zero、Due、MKRfamilyおよびNano 33(BLE と IoT)ボードには12ビットのADC機能があり、解像度を12に変更することでアクセスできます。これにより、analogRead()から0~4095の値が返されます。
Portenta H7には16ビットのADCがあり、0から65535までの値を得ることができます。
構文
analogReadResolution(bits)
bits:analogRead()関数によって返される値の分解能(ビット)を決定します。1~32 の間で設定できます。サポートされている 12 または 16 ビットよりも高い解像度を設定できますが、analogRead()によって返される値は近似値となります。詳細については、以下の注記を参照してください。
戻り値
無し
プログラム例
このプログラムは、異なる解像度のADCを使用する方法を示しています。
void setup() { // open a serial connection Serial.begin(9600); } void loop() { // read the input on A0 at default resolution (10 bits) // and send it out the serial connection analogReadResolution(10); Serial.print("ADC 10-bit (default) : "); Serial.print(analogRead(A0)); // change the resolution to 12 bits and read A0 analogReadResolution(12); Serial.print(", 12-bit : "); Serial.print(analogRead(A0)); // change the resolution to 16 bits and read A0 analogReadResolution(16); Serial.print(", 16-bit : "); Serial.print(analogRead(A0)); // change the resolution to 8 bits and read A0 analogReadResolution(8); Serial.print(", 8-bit : "); Serial.println(analogRead(A0)); // a little delay to not hog Serial Monitor delay(100); }
注釈と注意事項
analogReadResolution()の値をボードの能力よりも高い値に設定すると、Arduinoは最高の解像度でのみレポートし、余分なビットを0でパディングします。
例えば、AnalogReadResolution(16)でDueを使用すると、最初の12ビットが実際のADC読み取り値を含み、最後の4ビットが0でパディングされた、近似の16ビットの数値が得られます。
analogReadResolution()の値をボードの能力より低い値に設定した場合、ADCから読み込まれた余分な最下位ビットは破棄されます。
16ビットの分解能(または実際のハードウェア性能よりも高い分解能)を使用すると、将来のボードでより高い分解能のADCが利用可能になったときに、コードを変更することなく自動的にデバイスを処理するスケッチを書くことができます。