我们使用Arduino语言提供的analogWrite() 功能来输出一个模拟信号。
好吧,不是真的模拟信号,而是一个PWM信号。
如果你以Arduino Uno为例,你会发现有6个模拟输入引脚,A0-A5,但没有模拟输出引脚。
我们以一种特殊的方式使用数字输出引脚来模拟模拟输出。
PWM的意思是脉冲宽度调制,它是我们用来模拟数字设备的模拟输出的一种技术。我们基本上发射一个高电平信号,持续一小段时间,然后发射一个低电平信号,不断重复,非常快。模拟设备将看到一个基于周期的平均值。高电平周期越短,平均值就越小。
要模拟一个0V的模拟信号,使用
analogWrite(0)
要模拟一个高电平模拟信号(Arduino Uno上的5V),使用
analogWrite(255)
中间的任何东西都在这两个值之间。一个2.5V的模拟信号是analogWrite(127) 。
这是在输出5V的设备上。一些Arduino设备,如Arduino MKR 1010 WiFi最大输出3.3V,所以这些值将适应输出引脚所能发出的最高电压。
不是所有的数字输出引脚都能做到这一点。特别是我们可以用analogWrite() ,这些引脚都标有斜体字~ 。在Arduino Uno上,我们可以使用3、5、6、9、10、11引脚。
在Arduino MKR 1010 Wifi上,我们可以使用0-8、10、11、A3、A4引脚。
在每个板子的官方规格上,你会发现PWM引脚的列表。