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.