LED亮度渐隐
本例向你展示如何使用analogWrite()函数来让LED亮度渐变。AnalogWrite 通过PWM技术(脉宽调制技术)工作,采用PWM技术能够快速的开关一个数字引脚,通电的时间和断电的时间按照一定的比例分配,这样一来就产生了亮度渐变效果。
【译者注:想不明白应该去了解下生物学视觉暂留的知识。】
完成本例所需的硬件设备
- Arduino或Genuino板
- LED灯
- 220Ω电阻
- 连接线
- 面包板
电路搭建
将LED阳极(较长脚)通过220Ω电阻连接到板上的9号引脚。
连接LED阴极(较短脚)到GND。
电路原理图
例程代码
setup()函数只需声明9号引脚为输出引脚,其他什么都不做。
调用analogWrite()函数(在loop函数内)需要两个参数:第一个为要操作的引脚,第二个时要写出的PWM 脉冲宽度 值。
为了让LED的熄灭和点亮有渐变效果,你需要逐渐将PWM值从0(全部时间不通电)逐渐增加到255(全部时间通电)。然后,再从255调到0,以完成一轮亮度渐变。在下方的工程中,PWM值用一个名为brightness的变量存储。loop函数每执行一次,就将brightness变量的值与fadeAmount变量的值相加,并将和再赋给brightness变量。
当brightness变量的值是0或255时,如果发现fadeAmount值为-5,它就应被设为5;若为5则设为-5。如此一来,下次进入循环时亮度就会跟着由弱转亮或由亮转弱。analogWrite()函数能极其快速的改变PWM值,因此在loop函数最后的delay控制了渐变速度。试试看改变delay的时间,看看它如何影响渐变效果。
/*
LED亮度渐隐
本例向你展示如何用analogWrite()函数让9号引脚连接的LED亮度渐弱。
analogWrite()函数使用PWM技术,因此如果你想要使用其他引脚接LED,一定保证选择的引脚也支持PWM输出。大多数Arduino板支持PWM的引脚以“~”符号标明.比如: ~3, ~5, ~6, ~9, ~10和~11。
这个例子是公开的。
*/
int led = 9; // LED连接的PWM引脚
int brightness = 0; // LED亮度
int fadeAmount = 5; // 亮度每次的变化值
// setup函数在通电或复位后仅运行一次。
void setup() {
// 声明9号引脚为输出模式:
pinMode(led, OUTPUT);
}
// loop函数永远循环运行:
void loop() {
// 设置9号引脚LED的亮度值:
analogWrite(led, brightness);
// 改变下次的亮度值:
brightness = brightness + fadeAmount;
// 一次渐变结束后改变亮度变化的方向:
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// 等待30毫秒以让人眼看出渐变效果
delay(30);
}