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.