友情提示:680元/半年,儿童学编程,就上码丁实验室。
你将学到什么?
你将了解脉冲宽度调试(PWM)的原理
你将使用PWM制作一个呼吸灯的效果
脉冲宽度调试
PWM,也就是脉冲宽度调制,用于将一段信号编码为脉冲信号(方波信号)。是在数字电路中 达到 模拟输出效果的一种手段。即:使用数字控制产生占空比不同的方波(一个不停在开与关之间切换的信号)来控制模拟输出。我们要在数字电路中输出模拟信号,就可以使用PWM技术实现。
在arduino中,我们常用PWM来驱动LED的暗亮程度,电机的转速等。
我们知道,在数字电路中,电压信号是离散的: 不是 0(0V) 就是 1(5V或者3.3V), 那么如何输出介于 0v 和 5V之间的某个电压值呢?
简单来说就是在一个周期内让电压在0V与5V之间快速切换,根据5V的占比便可以模拟出0v到5v之间的不同电压。
脉冲宽度调制不同的占空比
动态显示占空比
arduino使用analogWrite()函数来实现PWM功能,参数值范围:0~255,0表示的意思是5V占比为0%(表现为针脚输出0V),128的意思是5V占比为50%(变现为针脚输出2.5V),255表示的意思是5V占比为100%(表现为针脚输出5V)。
arduino官网对于PWM的解释:https://www.arduino.cc/en/Tutorial/PWM
arduino uno
arduino uno支持PWM功能的数字针脚为:3、 5、 6、 9、 10、 11(有~标志)。
呼吸灯项目
电路图
程序代码
文字代码如下:
int led = 6;
void setup() {
// put your setup code here, to run once:
pinMode(led,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
for(int i=0;i<=255;i++)
{
analogWrite(led,i);
delay(5);
}
for(int i=255;i>=0;i–)
{
analogWrite(led,i);
delay(5);
}
}