这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版后一修订版两侧同时换到之后的修订记录 | ||
zh:reference:language:analogwriteresolution [2016/01/06 08:41] – [Returns] nzhu | reference:language:analogwriteresolution [2017/04/07 10:03] – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 描述 ====== | ||
+ | |||
+ | 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); | ||
+ | } | ||
+ | </ |