使用analogWrite()功能让LED渐变亮或者渐变灭。analogWrite使用了PWM(脉冲宽度调制)功能,快速打开或者关闭数字引脚来制造渐变的效果。
/* Fade 使用analogWrite()功能让LED渐变亮或者渐变灭 */ int led = 9; // LED 连到9号脚 int brightness = 0; // LED 亮度 int fadeAmount = 5; // 渐变量 void setup() { //9为数字输出 pinMode(led, OUTPUT); } void loop() { // 亮度 analogWrite(led, brightness); // 下一次改变亮度 brightness = brightness + fadeAmount; // 渐变快要结束的时候反过来 if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; } // 等待30毫秒看看效果 delay(30); }
这个例子中我们使用了一个新函数:analogWrite()。这个函数用于从特定的管脚输出PWM信号。
PWM是使用数字手段来控制模拟输出的一种手段。使用数字控制产生占空比不同的方波(一个不停在开与关之间切换的信号)来控制模拟输出。控制LED亮度渐变我们常常会用到这个函数。
把LED的阳极(长脚的那端)接一个220欧的电阻到控制器的数字输出引脚9,连接负极到控制器的GND。
只需要在setup中设置9号引脚为LED即可
你在loop中使用的analogWrite()功能需要两点:
1.说明输出到哪个引脚。
2.说明PWM值。
为了产生渐变的效果,从0到255逐渐增加PWM值,然后减小到零来完成一个循环。下面的程序中,将PWM值设置为叫做brightness的变量。loop中每一次循环,通过变量fadeAmount增减PWM值。 如果brightness不在最大值也不在最小值,fadeAmount就不会变化。换句话说,如果fadeAmount是5就把它设置成-5,如果是-5就设置为5。 下次循环的时候,反过来。
analogWrite()可以很快的改变pwm值,所以要delay来控制渐变的速度,试着改变delay的值,看看会发生什么。
/* Fade 使用analogWrite()功能让LED渐变亮或者渐变灭 */ int led = 9; // LED 连到9号脚 int brightness = 0; // LED 亮度 int fadeAmount = 5; // 渐变量 void setup() { //9为数字输出 pinMode(led, OUTPUT); } void loop() { // 亮度 analogWrite(led, brightness); // 下一次改变亮度 brightness = brightness + fadeAmount; // 渐变快要结束的时候反过来 if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; } // 等待30毫秒看看效果 delay(30); }