首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Arduino示例代码详解:Fade 衰减

这段代码是Arduino入门级的示例代码,非常适合学习PWM(脉冲宽度调制)和模拟输出的基本概念。

/*

Fade

This example shows how to fade an LED on pin 9

using the analogWrite() function.

This example code is in the public domain.

*/

int led = 9;           // the pin that the LED is attached to

int brightness = 0;    // how bright the LED is

int fadeAmount = 5;    // how many points to fade the LED by

// the setup routine runs once when you press reset:

void setup() {

// declare pin 9 to be an output:

pinMode(led, OUTPUT);

}

// the loop routine runs over and over again forever:

void loop() {

// set the brightness of pin 9:

analogWrite(led, brightness);

// change the brightness for next time through the loop:

brightness = brightness + fadeAmount;

// reverse the direction of the fading at the ends of the fade:

if (brightness == 0 || brightness == 255) {

  fadeAmount = -fadeAmount ;

}

// wait for 30 milliseconds to see the dimming effect

delay(30);

}

代码功能

这段代码用于控制连接在数字引脚9上的LED灯的亮度,使其逐渐变亮和变暗(即“渐变”效果)。代码通过analogWrite()函数实现LED的亮度调节。

渐变效果:代码通过逐渐增加和减少LED的亮度,使其在亮和暗之间循环变化,产生渐变效果。

应用场景:这种效果常用于指示灯、装饰灯或需要动态显示的场合。

代码逐行解释

1. 注释部分

功能:通过analogWrite()函数控制连接在引脚9上的LED的亮度,使其产生渐变效果。

/*

Fade

This example shows how to fade an LED on pin 9

using the analogWrite() function.

This example code is in the public domain.

*/

2. 变量定义

int led = 9;           // the pin that the LED is attached to

int brightness = 0;    // how bright the LED is

int fadeAmount = 5;    // how many points to fade the LED by

led:定义了一个变量led,并将其赋值为9,表示LED连接在数字引脚9上。

brightness:定义了一个变量brightness,初始值为0,表示LED的初始亮度。

fadeAmount:定义了一个变量fadeAmount,初始值为5,表示每次循环中亮度的变化量。

3.setup()函数

void setup() {

// declare pin 9 to be an output:

pinMode(led, OUTPUT);

}

setup()函数在Arduino板复位后只运行一次。

pinMode(led, OUTPUT);设置数字引脚9为输出模式,这样该引脚可以输出PWM信号来控制LED的亮度。

4.loop()函数

void loop() {

// set the brightness of pin 9:

analogWrite(led, brightness);

// change the brightness for next time through the loop:

brightness = brightness + fadeAmount;

// reverse the direction of the fading at the ends of the fade:

if (brightness == 0 || brightness == 255) {

  fadeAmount = -fadeAmount ;

}

// wait for 30 milliseconds to see the dimming effect

delay(30);

}

loop()函数会不断重复运行。

analogWrite(led, brightness);:通过PWM(脉冲宽度调制)信号设置引脚9的亮度。analogWrite()函数的参数范围是0到255,其中0表示完全关闭LED,255表示完全点亮LED。

brightness = brightness + fadeAmount;:每次循环中,亮度值brightness增加或减少fadeAmount。

if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; }:当亮度达到最小值(0)或最大值(255)时,改变亮度变化的方向。例如,当亮度达到255时,fadeAmount变为-5,使亮度逐渐减小;当亮度达到0时,fadeAmount变为5,使亮度逐渐增加。

delay(30);:每次循环之间延迟30毫秒,以便观察到LED亮度变化的效果。

硬件连接

LED连接

将LED的长脚(正极)连接到数字引脚9。

将LED的短脚(负极)通过一个限流电阻(如220Ω)连接到GND(地)。限流电阻的作用是防止通过LED的电流过大,从而保护LED。

Arduino板:确保Arduino板通过USB线连接到电脑。运行结果

当代码上传到Arduino板并运行后,连接在数字引脚9上的LED灯会逐渐变亮,达到最亮后逐渐变暗,然后再次变亮,如此循环往复。

整个过程看起来像是LED在“呼吸”或“渐变”。

修改建议

改变渐变速度

可以通过调整delay(30);中的延迟时间来改变渐变的速度。例如,将延迟时间增加到50毫秒,会使渐变效果更缓慢。

改变渐变范围

可以通过调整fadeAmount的值来改变每次亮度变化的幅度。例如,将fadeAmount设置为10,会使亮度变化更快。

使用其他引脚

如果需要控制其他引脚上的LED,只需将led变量的值改为对应的引脚号即可,但需要注意的是,并非所有数字引脚都支持PWM输出(具体支持PWM的引脚可以在Arduino的文档中查找)。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OGhrtVjtQTzrUBjLnUp2pfbg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券