【Arduino和高中通用技术】——二、认识PWM输出

        上一篇介绍了使用板载LED的闪烁灯实验,使用的是IO端口13,这个端口与板载LED相连也进行了引出。这一篇介绍一下板子上编号之前带有波浪线(~)的端口,这些端口可以用作PWM输出,所谓PWM输出是指脉冲宽度调制,假定IO口3上面输出的电压最大值达到5V,那么如果我们在单位时间内不断的交替输出0V和5V,那么外接的LED就表现为收到接近2.5V的电压输入。

一、硬件准备

        LED和杜邦线,将LED长引脚连接到3号IO口,将短引脚(负极)连接到GND。

二、编写代码

/*
 Name:		ledflash.ino
 Created:	2019/2/9 16:06:26
 Author:	Administrator
*/
uint8_t PinLed = 3;
int lghStep = 5;
int curOut = 0;
// the setup function runs once when you press reset or power the board
void setup() {
	pinMode(PinLed, OUTPUT);
}

// the loop function runs over and over again until power down or reset
void loop() {
	analogWrite(PinLed, curOut);
	curOut += lghStep;
	if (curOut >= 255 || curOut<=0 ) {
		lghStep = -lghStep;
	}
	delay(20);
}

1、代码中的PinLed还是指连接LED(正极)的端口,这里是支持PWM输出的任意端口。你可以修改这个数值和硬件连接来测试其他支持PWM的端口。

2、lghstep是指亮度变化步长,需要注意的是,这个值被设置为恰好可以被255整除,否则代码要稍微复杂一些,你可以测试一下其他导致超出255和小于0的值来观察一下超出范围时LED的不规则闪烁,然后修改代码使之不闪烁。

3、curOut是当前输出的值。

4、用analogWrite函数来输入一个PWM值,这与之前输出数字信号0、1是不同的。

5、请回顾一下loop函数是被如何调用的,更好的理解为什么代码中没有循环,却可以让LED灯周而复始的不断“呼吸”。

你可能感兴趣的:(Arduino,Arduino和高中通用技术)