两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 |
zh:reference:language:analogwriteresolution [2016/01/06 08:52] – [参数] nzhu | reference:language:analogwriteresolution [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 |
---|
| ====== analogWriteResolution() ====== |
| |
| |
| analogWriteResolution()是用在Due and Zero上的Analog API的扩展 . |
| |
| analogWriteResolution()用来设置 analogWrite() 的精度.默认是8位(0-255)向后兼容AVR板. |
| |
| DUE有下列硬件特性: |
| |
| 12个默认8-bit的PWM引脚, |
| 2个 12-bit DAC (数模转换)引脚 |
| 设置为12位精度,你就可以用 analogWrite() 得到0-4096的值来使用最大的DAC精度或者设置pwm信号. |
| |
| Zero有以下的硬件特性: |
| |
| 10个默认8位的pwm引脚, 和AVR板一样. 可以改变到12位精度. |
| 1个 10-bit DAC (数模转换)引脚 |
| 设置为10位精度,你就可以使用 analogWrite() 得到0-1023的值来使用最大的DAC精度 |
| |
| ===== 语法 ===== |
| |
| |
| 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("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精度到12位 |
| // 12位精度只在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)); |
| |
| // 改变pwm精度到4位 |
| 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); |
| } |
| </code> |