當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Arduino analogWriteResolution()用法及代碼示例

[零,到期和MKR家族]

說明

analogWriteResolution() 是 Arduino Due 的模擬 API 的擴展。

analogWriteResolution() 設置analogWrite() 函數的分辨率。它默認為 8 位(值介於 0-255 之間),以向後兼容基於 AVR 的板。

Due具有以下硬件函數:

  • 12 個默認為 8 位 PWM 的引腳,如基於 AVR 的板。這些可以更改為 12 位分辨率。

  • 2 個帶 12 位 DAC 的引腳(Digital-to-Analog 轉換器)

通過將寫入分辨率設置為 12,您可以使用 0 到 4095 之間的值的 analogWrite() 來利用完整的 DAC 分辨率或設置 PWM 信號而不翻轉。

Zero 具有以下硬件函數:

  • 10 個默認為 8 位 PWM 的引腳,如基於 AVR 的板。這些可以更改為 12 位分辨率。

  • 1 個帶 10 位 DAC 的引腳(Digital-to-Analog 轉換器)。

通過將寫入分辨率設置為 10,您可以使用 0 到 1023 之間的值的 analogWrite() 來利用完整的 DAC 分辨率

MKR 係列板具有以下硬件函數:

  • 4 個默認為 8 位 PWM 的引腳,如基於 AVR 的板。這些可以從 8(默認)更改為 12 位分辨率。

  • 1 個帶 10 位 DAC 的引腳(Digital-to-Analog 轉換器)

通過將寫入分辨率設置為 12 位,您可以將 analogWrite() 的值用於 0 到 4095 之間的 PWM 信號;在 DAC 引腳上設置 10 位以利用 1024 值的完整 DAC 分辨率。

用法

analogWriteResolution(bits)

參數

bits :確定analogWrite() 函數中使用的值的分辨率(以位為單位)。該值的範圍可以從 1 到 32。如果您選擇的分辨率高於或低於主板的硬件能力,則 analogWrite() 中使用的值如果太高將被截斷,如果太低則用零填充。有關詳細信息,請參閱下麵的注釋。

返回

示例代碼

解釋代碼

void setup() {
  // open a serial connection
  Serial.begin(9600);
  // make our digital pin an output
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  // read the input on A0 and map it to a PWM pin
  // with an attached LED
  int sensorVal = analogRead(A0);
  Serial.print("Analog Read) : ");
  Serial.print(sensorVal);

  // the default PWM resolution
  analogWriteResolution(8);
  analogWrite(11, map(sensorVal, 0, 1023, 0, 255));
  Serial.print(" , 8-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 255));

  // change the PWM resolution to 12 bits
  // the full 12 bit resolution is only supported
  // on the Due
  analogWriteResolution(12);
  analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
  Serial.print(" , 12-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 4095));

  // change the PWM resolution to 4 bits
  analogWriteResolution(4);
  analogWrite(13, map(sensorVal, 0, 1023, 0, 15));
  Serial.print(", 4-bit PWM value : ");
  Serial.println(map(sensorVal, 0, 1023, 0, 15));

  delay(5);
}

注意事項和警告

如果您將analogWriteResolution() 值設置為高於您開發板能力的值,Arduino 將丟棄額外的位。例如:在 12 位 DAC 引腳上使用帶有 analogWriteResolution(16) 的 Due,隻有傳遞給 analogWrite() 的值的前 12 位將被使用,最後 4 位將被丟棄。

如果您將 analogWriteResolution() 值設置為低於您的板能力的值,則缺失的位將用零填充以填充硬件所需的大小。例如:在 12 位 DAC 引腳上使用帶analogWriteResolution(8) 的Due,Arduino 會將4 個零位添加到analogWrite() 中使用的8 位值以獲得所需的12 位。

相關用法


注:本文由純淨天空篩選整理自arduino.cc大神的英文原創作品 analogWriteResolution()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。