analogReadResolution()

描述

設定 analogRead() 所回傳的數值大小 (以 bit 為單位),它預設為 10bits (回傳值範圍在 0 到 1023) 以相容於 AVR 系列的 Arduino 板。

而 86Duino 開發板的類比轉數位硬體則擁有 11-bit 解析度,用此函式設定過後,就可以從 analogRead() 得到 0 到 2047 的 數值。

語法


analogReadResolution(bits)

參數

bits: 決定 analogRead() 函式回傳的解析度 (以 bit 為單位),可以設定它的範圍從 1 到 32;你可以把解析度設定的比 11 還高,但是 analogRead() 回傳的數值會變為近似值,詳細說明可以看下面的註解。

回傳

無回傳值

註解

如果你將 analogReadResolution() 的數值設定的比板子上類比轉數位解析度還要高的時候,86Duino 只會回報最高的解析度,額外的位元皆是 0。

舉個例子:在 86Duino 上呼叫 analogReadResolution(16) 會讓你得到一個 16-bits 的數字,它是實際被讀到的類比轉數位訊號數值的前面 11bits 之近似值,而之後五位將會是 0。

反之,如果你將 analogReadResolution() 的數值設定的比板子上類比轉數位解析度還要低的時候,從類比轉數位得到之多餘有效位元將會被捨去。

設定 16 位元解析度 (或者比硬體實際解析度更高的任意值) 讓你可以在程式中自動去對應更高解析度的類比轉數位硬體,當這些硬體規格在未來的板子被提高之後就不需要改寫程式碼了。

範例

void setup() {
  // 開啟序列埠
  Serial.begin(9600); 
}

void loop() {
  // 從 A0 讀入預設的解析度數值 (10bits)
  // 並且從序列埠輸出
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");
  Serial.print(analogRead(A0));

  // 改變讀取的解析度為 12bits 並從 A0 讀入
  analogReadResolution(12);
  Serial.print(", 12-bit : ");
  Serial.print(analogRead(A0));

  // 改變讀取的解析度為 16bits 並從 A0 讀入
  analogReadResolution(16);
  Serial.print(", 16-bit : ");
  Serial.print(analogRead(A0));

  // 改變讀取的解析度為 8bits 並從 A0 讀入
  analogReadResolution(8);
  Serial.print(", 8-bit : ");
  Serial.println(analogRead(A0));

  // 些微的延遲讓數值輸出不會占滿螢幕
  delay(100);
}

See also

類比輸入腳的描述
analogRead()


語法參考主頁面

本頁由熱血青年 LBU 譯自英文版。

The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.