大好きArduino

Arduino総合情報サイト

analogReadResolution

2016/06/09

Arduino Dueのために追加された専用関数で、analogRead()が返す値のサイズ(ビット数)を変更することが可能です。
デフォルトは10ビット(0~1023)で、従来のArduinoボードと互換性があります。
Dueは特別に12ビットADコンバータを搭載しているため、分解能(resolution)を12ビットに変更することで0~4095の値を得ることができます。

bits: analogRead()関数が返す値の分解能をbit単位で指定します。
このパラメータの範囲は1から32で、実際には12より大きな値をセットすると、近似値を返します。

ボードが提供するADCの能力を超える分解能を設定すると、不足するビットにはゼロが詰められます。
たとえば、DueでanalogReadResolution(16)としたときにanalogRead()が返す値は、16ビットのうち上位12ビットだけがADCの結果となり下位4ビットにはゼロが詰められています。
ボードの能力よりも低い分解能を指定した場合は下位ビットが捨てられます。
実際のボードよりも高い16ビットの分解能を指定しておくことで将来的にもあらゆるボードに対してプログラムを変更することなく対応することができます。

●Example from Arduino Web Site

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);
}

Arduino 原文ページ

-リファレンス