正如标题所述。两者之间有什么区别?
模拟写(pin,0-255) vs 数字写(pin,LOW-HIGH)。
模拟写(pin,0-255)
数字写(pin,LOW-HIGH)
digitalWrite将把指定的引脚设置为两种状态之一--高/低,分别相当于5v(在某些电路板上为3.3v)和接地。
analogWrite可以根据使用的输出类型而变化。
如果应用于一个PWM引脚--它将把该引脚设置为一个周期性的高/低信号,其中高信号的百分比与写入的数值成正比。 例如 -
analogWrite(PWMpin,255)
将在100%的时间内为高电平,而
analogWrite(PWMpin,127)
50%的时间是高电平,50%的时间是低电平。
当对DAC引脚应用analogWrite时(在一些板子上可用,如DUE 或MEGA)。 analogWrite实际上会使指定的引脚输出一个与指定的模拟值相近的电压水平。
例如,在Due上,最大电压为3.3v,默认模拟分辨率为8位-[0:255]。
analogWrite(DACpin,255)
将导致指定的引脚输出3.3v,而-
analogWrite(DACpin,127)
将导致指定引脚输出1.35伏电压。
digitalWrite将输出引脚设置为低电平或高电平(这些电压取决于处理器的Vcc 。对于Uno或Mega来说,这将是0V或5V(或接近于此)。
digitalWrite
这里是digitalWrite (LOW)的屏幕截图。
。
也就是说,输出引脚是在0V。
现在是digitalWrite (HIGH)。
输出电压为5V。
analogWrite真的应该被命名为PWMwrite,因为它配置处理器的定时器来输出PWM(脉宽调制)。
analogWrite
让我们试试analogWrite(1)。
你可以看到电压水平大部分时间是0V,短时间内会达到5V。你还可以看到频率是490Hz,这与analogWrite的参考页所说的一样。
放大了。
输出高电平为8 µs,这正好是2048 µs的1/256,也就是定时器的周期。因此,我们的占空比为1/256(0.39%)。
让我们试试analogWrite(127) - 从0到255的一半。
现在你可以看到,输出有一半的时间是高电平,其余的时间是低电平。
让我们试试analogWrite(254)。
这与analogWrite(1)的情况相反。除了一个短暂的时间,输出一直是高电平。缩小范围。
![analogWrite (254) - zoomed][7]。
现在,输出在8 µs内是*关闭的--相比之下,先前的图像是在8 µs内打开的。
analogWrite (0)与digitalWrite (LOW)相同。
analogWrite (0)
digitalWrite (LOW)
analogWrite (255)'与digitalWrite (HIGH)'相同。
analogWrite (255)'与
这可以通过wiring_analog.c中的相关代码证明。
if (val == 0) { digitalWrite(pin, LOW); } else if (val == 255) { digitalWrite(pin, HIGH); }
analogWrite基本上配置了硬件定时器来输出PWM。一旦你这样做了, 计时器硬件就会输出所要求的占空比(从0到255), 其中0是永远关闭, 255是永远打开, 而在这两者之间的某个值会给你PWM (脉冲输出).
关于定时器的更多信息,请参见我的关于定时器的页面。
digitalWrite将引脚设置为一个高值或低值,直到再次为该引脚调用digitalWrite时,该值将一直保持在这个位置。
analogWrite将引脚设置为一个振荡值,其脉冲长度基于作为第二个参数指定的占空比。
所以。
digitalWrite (5, HIGH); // Pin 5 goes high analogWrite (6, 127); // Pin 6 oscillates regularly between 0v and 5v (or 3.3v) at about 250Hz.
digitalWrite将把指定的引脚设置为两种状态之一--高/低,分别相当于5v(在某些电路板上为3.3v)和接地。
analogWrite可以根据使用的输出类型而变化。
如果应用于一个PWM引脚--它将把该引脚设置为一个周期性的高/低信号,其中高信号的百分比与写入的数值成正比。 例如 -
将在100%的时间内为高电平,而
50%的时间是高电平,50%的时间是低电平。
当对DAC引脚应用analogWrite时(在一些板子上可用,如DUE 或MEGA)。 analogWrite实际上会使指定的引脚输出一个与指定的模拟值相近的电压水平。
例如,在Due上,最大电压为3.3v,默认模拟分辨率为8位-[0:255]。
将导致指定的引脚输出3.3v,而-
将导致指定引脚输出1.35伏电压。
digitalWrite
将输出引脚设置为低电平或高电平(这些电压取决于处理器的Vcc 。对于Uno或Mega来说,这将是0V或5V(或接近于此)。这里是digitalWrite (LOW)的屏幕截图。
也就是说,输出引脚是在0V。
现在是digitalWrite (HIGH)。
输出电压为5V。
analogWrite
真的应该被命名为PWMwrite,因为它配置处理器的定时器来输出PWM(脉宽调制)。让我们试试analogWrite(1)。
你可以看到电压水平大部分时间是0V,短时间内会达到5V。你还可以看到频率是490Hz,这与analogWrite的参考页所说的一样。
放大了。
输出高电平为8 µs,这正好是2048 µs的1/256,也就是定时器的周期。因此,我们的占空比为1/256(0.39%)。
让我们试试analogWrite(127) - 从0到255的一半。
现在你可以看到,输出有一半的时间是高电平,其余的时间是低电平。
让我们试试analogWrite(254)。
这与analogWrite(1)的情况相反。除了一个短暂的时间,输出一直是高电平。缩小范围。
![analogWrite (254) - zoomed][7]。
现在,输出在8 µs内是*关闭的--相比之下,先前的图像是在8 µs内打开的。
analogWrite (0)
与digitalWrite (LOW)
相同。analogWrite (255)'与
digitalWrite (HIGH)'相同。这可以通过wiring_analog.c中的相关代码证明。
摘要
analogWrite
基本上配置了硬件定时器来输出PWM。一旦你这样做了, 计时器硬件就会输出所要求的占空比(从0到255), 其中0是永远关闭, 255是永远打开, 而在这两者之间的某个值会给你PWM (脉冲输出).关于定时器的更多信息,请参见我的关于定时器的页面。
digitalWrite将引脚设置为一个高值或低值,直到再次为该引脚调用digitalWrite时,该值将一直保持在这个位置。
analogWrite将引脚设置为一个振荡值,其脉冲长度基于作为第二个参数指定的占空比。
所以。