我正在看我的 Arduino Uno,我注意到数字引脚上的符号11
, 10
, 9
, 6
,5
和3
。这些是什么意思?这会影响它的工作方式吗?我可以在某些情况下不使用这些引脚吗?
为什么有些别针的数字旁边有“~”符号?
放松。别担心。这些引脚被称为PWM
并且与其他引脚相同,除了它们具有“额外奖励”。
Arduino网站的一些用途:
- 调光 LED
- 模拟模拟输出。输出仍以数字方式从 0V 切换到 5V。然而,低通滤波器(电容器和电阻器)来模拟模拟电压。
- 生成音频信号。
- 为电机提供变速控制。
- 生成调制信号,例如驱动红外 LED 用于遥控器。
这个怎么运作:
PWM 引脚由片上定时器控制,该定时器以大约 490Hz 的速率自动切换引脚。“脉冲宽度调制”(PWM)是引脚在该频率的单个周期内保持开启或关闭的时间。这可以使 LED 变暗,给人一种幻觉,它的亮度是以前的一半,实际上它闪烁得非常快。
当有 25% 的占空比时,它是四分之一的时间。如果您使用 LED,它会显示大约 1/4 的亮度 [给予或接受]。(注意:正如一些人指出的那样,这并不是真正的比例,但为了简单起见,让我们保持这种方式。例如:25% 并不总是亮度的 1/4。)
(如果您真的精通电气,您可以添加一个电容器使其也成为模拟输出。)
如何使用这些引脚输出:
首先,您需要将引脚定义为输出。然后,您使用
analogWrite(ledPin, 128);
它来启动它。ledPin
是您要启动 PWM 的 PWM 引脚,应128
替换为 和 之间的0
数字255
;0
: 0% duty cycle
(完全关闭引脚)和255
: 100% duty cycle
。(完全打开引脚)
资料来源:http ://www.arduino-tutorials.com/arduino-pwm/
为什么我不能在我的代码中快速打开和关闭灯?:
从技术上讲,您可以,但是,有一些问题:
- 它可能不如使用带有 Arduino 的硬接线电路精确
- 只需键入指令而不是使用大量“if”语句就更简单了
如果 Arduino 的唯一目的是生成 PWM 信号,那并不会产生太大的影响。但是,如果您在主循环中放置任何超过 50 毫秒的延迟,则会打乱时序。使用软件方法,您可能希望消除任何“延迟”功能,因为 Arduino 只在一个线程上运行(它一次只能做一件事)。如果您知道自己在做什么,那么调暗灯光不会有太大的不同,但是如果您有一个带 PWM 的额外引脚,那么您只是在使用软件方法浪费时间。
正如其他人指出的那样:
您的电路仍然需要一个电阻器来限制电流和电压。你不能跳过这个。
关于 PWM 引脚的一个常见误解是,在使用 PWM 时,没有必要使用限流电阻(例如,使用 LED)。
这不是真的。PWM 引脚应该被认为是数字引脚,它们会自动打开和关闭。这意味着它们会达到与其他任何引脚相同的高电压。
使用带 PWM 的 LED 时,仍必须使用限流电阻。使用带 PWM 的电机时,您应该(几乎总是)使用晶体管。