ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# LED亮度渐隐 > 本例向你展示如何使用**analogWrite()**函数来让LED亮度渐变。AnalogWrite 通过**PWM技术**(脉宽调制技术)工作,采用PWM技术能够快速的开关一个数字引脚,通电的时间和断电的时间按照一定的比例分配,这样一来就产生了亮度渐变效果。  > 【译者注:想不明白应该去了解下生物学**视觉暂留**的知识。】 ### 所需硬件 * Arduino或Genuino板 * LED灯 * 220Ω电阻 * 连接线 * 面包板 ### 电路 将LED阳极(较长脚)通过220Ω电阻连接到板上的9号引脚。  连接LED阴极(较短脚)到GND。  ![这里写图片描述](http://img.blog.csdn.net/20160418131130640) ### 原理图 ![这里写图片描述](http://img.blog.csdn.net/20160418131059575) ### 代码 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); } ~~~ ## 相关资料 [setup()](http://www.arduino.cc/en/Reference/Setup)  [loop()](http://www.arduino.cc/en/Reference/Loop)  [analogWrite()](http://www.arduino.cc/en/Reference/AnalogWrite)  [int](http://www.arduino.cc/en/Reference/Int)  [for](http://www.arduino.cc/en/Reference/For)  [PWM](http://www.arduino.cc/en/Tutorial/PWM)  [读取模拟信号、串口操作  Arduino工程的最小单元  点亮LED  读取模拟电压值]( )