reference:language:analogwriteresolution
差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 前一修订版 | |||
| — | reference:language:analogwriteresolution [2025/10/11 02:55] (当前版本) – 外部编辑 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== analogWriteResolution() ====== | ||
| + | |||
| + | analogWriteResolution()是用在Due and Zero上的Analog API的扩展 . | ||
| + | |||
| + | analogWriteResolution()用来设置 analogWrite() 的精度.默认是8位(0-255)向后兼容AVR板. | ||
| + | |||
| + | DUE有下列硬件特性: | ||
| + | |||
| + | 12个默认8-bit的PWM引脚, | ||
| + | 2个 12-bit DAC (数模转换)引脚 | ||
| + | 设置为12位精度, | ||
| + | |||
| + | Zero有以下的硬件特性: | ||
| + | |||
| + | 10个默认8位的pwm引脚, 和AVR板一样. 可以改变到12位精度. | ||
| + | 1个 10-bit DAC (数模转换)引脚 | ||
| + | 设置为10位精度, | ||
| + | |||
| + | ===== 语法 ===== | ||
| + | |||
| + | |||
| + | analogWriteResolution(bits) | ||
| + | |||
| + | ===== 参数 ===== | ||
| + | |||
| + | |||
| + | |||
| + | bits:决定analogWrite()的精度值。这个值可以从1到32之间变化。如果你选择了高于或者低于板子的容量值,analogWrite()得到的值将会缩短或者以0填充,详细请看注意事项。 | ||
| + | ===== 返回 ===== | ||
| + | |||
| + | |||
| + | 无. | ||
| + | |||
| + | ===== 注意 ===== | ||
| + | |||
| + | |||
| + | |||
| + | 如果你设置的 analogWriteResolution() 高于板子的容量,得到的数据将会抛弃额外的几位精度,例如:在DUE的12位DAC引脚上使用analogWriteResolution(16),只有前十二位值会被analogWrite()使用,后四位将被抛弃。 | ||
| + | |||
| + | 如果你设置的analogWriteResolution() 小于板子的容量,缺失的几位将会被0填充,来填补硬件需求,例如:在DUE的12位DAC引脚上使用analogWriteResolution(8),将会添加4位0到8位值后面来满足12位需求。 | ||
| + | ===== 例子 ===== | ||
| + | |||
| + | <code cpp> | ||
| + | void setup(){ | ||
| + | // 打开串口 | ||
| + | Serial.begin(9600); | ||
| + | // 数字输出 | ||
| + | pinMode(11, OUTPUT); | ||
| + | pinMode(12, OUTPUT); | ||
| + | pinMode(13, OUTPUT); | ||
| + | } | ||
| + | |||
| + | void loop(){ | ||
| + | // 读取A0输入,映射到PWM脚 | ||
| + | // 连接的LED | ||
| + | int sensorVal = analogRead(A0); | ||
| + | Serial.print(" | ||
| + | Serial.print(sensorVal); | ||
| + | |||
| + | // 默认pwm精度 | ||
| + | analogWriteResolution(8); | ||
| + | analogWrite(11, | ||
| + | Serial.print(" | ||
| + | Serial.print(map(sensorVal, | ||
| + | |||
| + | // 改变pwm精度到12位 | ||
| + | // 12位精度只在Due上支持 | ||
| + | analogWriteResolution(12); | ||
| + | analogWrite(12, | ||
| + | Serial.print(" | ||
| + | Serial.print(map(sensorVal, | ||
| + | |||
| + | // 改变pwm精度到4位 | ||
| + | analogWriteResolution(4); | ||
| + | analogWrite(13, | ||
| + | Serial.print(", | ||
| + | Serial.println(map(sensorVal, | ||
| + | |||
| + | delay(5); | ||
| + | } | ||
| + | </ | ||
