analogReadResolution()

Last revision:2025/05/10

名称

analogReadResolution()

説明

analogReadResolution()はAnalog APIの拡張で、analogRead()により返される値の分解能(ビット単位)を変更することができる。デフォルト値は10ビット(0から1023)である。これは、AVRベースのボードとの後方互換性のためである。

Arduinoボードにより、分解能の範囲は異なる。

10ビット: 0から1023。12ビット: 0-4095、14ビット: 0-16383、16ビット: 0-65535。

書式

ボードのADCの分解能を設定するには、以下の関数を使う。

analogReadResolution(bits)

引数

この関数は以下の引数を受け付ける。

bitsanalogRead()関数が返す値の分解能(ビット単位)を決定する。
i
1から32の値を設定できる。サポートされている12ビットまたは16ビットを超える分解能を設定することも可能である。しかし、analogRead()が返す値は近似値となる。詳しくは、以下の注意を参照すること。

戻り値

なし。

コード例

このコードは、異なる分解能でADCを利用する方法を示す。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void setup() {
  // open a serial connection
  Serial.begin(9600);
}

void loop() {
  // read the input on A3 at default resolution (10 bits)
  // and send it out the serial connection
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");
  Serial.print(analogRead(A3));

  // change the resolution to 12 bits and read A3
  analogReadResolution(12);
  Serial.print(", 12-bit : ");
  Serial.print(analogRead(A3));

  // change the resolution to 16 bits and read A3
  analogReadResolution(16);
  Serial.print(", 16-bit : ");
  Serial.print(analogRead(A3));

  // change the resolution to 8 bits and read A3
  analogReadResolution(8);
  Serial.print(", 8-bit : ");
  Serial.println(analogRead(A3));

  // a little delay to not hog Serial Monitor
  delay(100);
}

注意

analogReadResolution()で、ボードの能力よりも大きい値を設定した場合、Arduinoボードは、分解能を超えた部分を0パディングした値を返却する。

例えば、UNO R4でanalogReadResolution(16)とすると、最初の14ビットに実際のADCの読み取り値が入り、後の2ビットは0パディングされた16ビットの値が返却される。

analogReadResolution()でボードの能力よりも小さい値を設定した場合、ADCで読み取った値の下位のビットが捨てられる。

16ビットの分解能(もしくは実際のハードウェア能力より大きい値)を使えば、将来ボードのADCの分解能が大きくなったときに、自動的にそのボードを使うことができるスケッチを書くことができる。

参照

オリジナルのページ

https://docs.arduino.cc/language-reference/en/functions/analog-io/analogReadResolution/

実装の解析

まだ解析していません。

最終更新日

August 16, 2026

inserted by FC2 system