多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## **模拟信号输出[Mega]** > 本例会使用Arduino Mega 或 Genuino Mega 板让12个LED一个接一个的进行亮度渐变。使用Mega的原因由于它有更多支持**PWM**操作的引脚。 ### **需要硬件** * Arduino Mega 或 Genuino Mega 板 * 12个红色LED * 12个220Ω电阻 * 跳线 * 面包板 * 杜邦线/电路连接线 ### **电路** ![图片来自官网](http://img.blog.csdn.net/20160509170032928) 将12个LED的阳极(长脚)通过220Ω限流电阻分别连接到2-13号引脚。将12个LED的阴极(短脚)连接到GND。 ### **原理图** ![图片来自官网](http://img.blog.csdn.net/20160509170048432) ### **代码** 在setup()函数中使用了一个for()循环来给2-13号引脚设置工作模式为OUTPUT。.  接着在loop()函数中,有一个嵌套的for循环。  最外层循环是: ~~~ for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) ~~~ 最外层循环会遍历所有的LED。在最外层循环切换到下一个LED之前,还需要做两件事。 * 第一:你需要将当前LED逐渐点亮 ~~~ for (int brightness = 0; brightness < 255; brightness++) { analogWrite(thisPin, brightness); delay(2); } ~~~ * 第二:你需要让当前LED逐渐熄灭  这个循环每过一次,brightness变量值+1,并且这个值会被写到引脚。当brightness达到最高的PWM值255时,下面的循环开始执行: ~~~ for (int brightness = 255; brightness >= 0; brightness--) { analogWrite(thisPin, brightness); delay(2); } ~~~ 这个循环减少brightness变量值,这会将LED亮度减低到0。当brightness值为0时,最外层for循环继续循环执行。下一个LED就会重复上述过程。 ~~~ /* 模拟信号输出[Mega] 这个例子让2-13号引脚连接的LED一个接一个的渐变。 本例子运行在Arduino Mega板,之前的板子不可用。 电路连接: * LED分别从2到13连接到GND 代码是公开的。 */ //常量,用来定义引脚范围 const int lowestPin = 2; const int highestPin = 13; void setup() { //设置2号引脚到13: for (int thisPin = lowestPin; thisPin <= highestPin; thisPin++) { pinMode(thisPin, OUTPUT); } } void loop() { // 迭代遍历所有引脚: for (int thisPin = lowestPin; thisPin <= highestPin; thisPin++) { //让LED渐亮: for (int brightness = 0; brightness < 255; brightness++) { analogWrite(thisPin, brightness); delay(2); } //让LED渐暗: for (int brightness = 255; brightness >= 0; brightness--) { analogWrite(thisPin, brightness); delay(2); } // 在LED渐变之间delay: delay(100); } } ~~~ ### **相关资料** [for()](https://www.arduino.cc/en/Reference/For)  [analogWrite()](https://www.arduino.cc/en/Reference/AnalogWrite)  [delay()](https://www.arduino.cc/en/Reference/Delay)