analogWriteResolution()

描述

analogWriteResolution() 可以設定 analogWrite() 函式的解析度,analogWrite() 的輸入值預設是 0 到 255 (8 bits),相容於 AVR 系列的 Arduino板。

86Duino 的 CPU 有 12 個 32-bit PWM 計時器,每個 PWM 計時器的最小時間間隔為 10ns。

在 86Duino 上,analogWrite() 函式的 PWM 頻率為 1000Hz ,最高解析度是 13,使用 analogWriteResolution() 將解析度設定為 13 就可以讓 analogWrite() 的輸入數值範圍變成 0 到 8191。

語法


analogWriteResolution(bits)

參數

bits: 決定 analogWrite() 函式使用的解析度 (以 bit 為單位),可以設定的範圍從 1 到 32;你可以把解析度設定的比硬體解析度更高也可以更低,但使用的 analogWrite() 數值會因為數值太大或者太小而被截斷,詳細說明可以看下面的註解。

回傳值

無回傳值

註解

如果你將 analogWriteResolution() 的數值設定的比板子的硬體解析度還要高的時候,將會捨去額外的位元;舉個例子:在 86Duino 上呼叫 analogWriteResolution(16) 之後,實際上 analogWrite() 使用的數值只有較低的 13 bits,而較高的 3 bits 會被捨去。

如果你將 analogWriteResolution() 的數值設定的比板子的硬體解析度還要低的時候,會補上 0 以達到所需的解析度;舉個例子:在 86Duino 上呼叫 analogWriteResolution(8) 之後,實際上 analogWrite() 會在輸入的 8-bit 數值中自動補上 5 個 0 以符合 13-bit 的解析度。

範例

void setup(){
  // 開啟序列埠
  Serial.begin(9600); 
  // 讓數位訊號 pin 腳變成輸出
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop(){
  // 從 A0 讀入數值並傳給下列與 LED 相連的 PWM pin 腳
  int sensorVal = analogRead(A0);
  Serial.print("Analog Read) : ");
  Serial.print(sensorVal);

  // 預設的 PWM 解析度
  analogWriteResolution(8);
  analogWrite(11, map(sensorVal, 0, 1023, 0 ,255));
  Serial.print(" , 8-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0 ,255));

  // 將 PWM 解析度變成 13 bits
  // 在 86Duino 上使用 13 bits 的解析度
  analogWriteResolution(13);
  analogWrite(12, map(sensorVal, 0, 1023, 0, 8191));
  Serial.print(" , 13-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 8191));

  // 將 PWM 解析度變成 4 bit
  analogWriteResolution(4);
  analogWrite(13, map(sensorVal, 0, 1023, 0, 127));
  Serial.print(", 4-bit PWM value : ");
  Serial.println(map(sensorVal, 0, 1023, 0, 127));

  delay(5);
}

See also

analogWrite()
map()


語法參考主頁面

本頁由熱血青年 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.