Arduino基础入门篇09—会呼吸的灯

|

  阅读本文大概需要3分钟。

|

本篇使用Arduino模拟输出功能,通过PWM脉宽调制来控制LED灯亮度,使其呈现呼吸灯效果。

1. 模拟信号

数字信号是以0、1表示的电平不连续变化的信号,而模拟信号则是用连续变化的物理量来表示信息的,信号随着时间连续变化。在我们生活中接触到的大多数都是模拟信号,例如声音、光照、温度的变化等。

在我们的Uno R3开发板上,第3、5、6、9、10、11引脚具有PWM(Pulse Width Modulation脉冲宽度调制)功能。

通过使用analogWrtie()函数,在指定的引脚上通过高低电平的不断转换输出一个周期固定的方波,通过改变高低电平在每个周期中所占的比例(占空比),进而得到不同的电压输出。

当一个周期内高电平出现时间长一些时,输出电压就会高一些,LED灯更亮一些。当高电平出现的时间短一些时,输出电压就会低一些,LED灯亮度则会暗一些。

2. 实验材料

  • Uno R3开发板

  • 配套USB数据线

  • 面包板及配套连接线

  • 1个LED灯

  • 1个220Ω限流电阻

3. 实验步骤

  1. 根据原理图搭建电路。

    直插LED灯正极连接限流电阻,电阻另一端连接开发板第3引脚,LED灯负极接开发板GND。

    实验原理图如下图所示:

    Arduino基础入门篇09—会呼吸的灯
    实验原理图

    实物连接图如下图所示:

    Arduino基础入门篇09—会呼吸的灯
    实物连接图
  2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

     1/*
    2  *  Breath
    3  *  通过模拟输出PWM控制LED灯,改变其亮度,达到呼吸效果
    4  */

    5
    6int  ledPin  =  3;
    7
    8void  setup  ()
    9
    {
    10    pinMode(ledPin,OUTPUT);
    11 }
    12
    13void  loop()
    14
    {
    15    for  (int  a=0;   a<=255; a++)                                //循环语句,控制PWM亮度的增加
    16    {
    17        analogWrite(ledPin,a);
    18        delay(8);                                                           //当前亮度级别维持的时间,单位毫秒                       
    19    }
    20    for  (int  a=255;   a>=0; a--)                          //循环语句,控制PWM亮度减小
    21    {
    22        analogWrite(ledPin,a);
    23        delay(8);                                                           //当前亮度的维持的时间,单位毫秒   
    24    }
    25
    26 }
  3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

    Arduino基础入门篇09—会呼吸的灯
    程序下载

4. 实验现象

LED灯由亮变暗,又由暗变量。

Arduino基础入门篇09—会呼吸的灯

实验现象

5. 函数介绍


analogWrite()

  • 描述:在指定引脚输出指定占空比的PWM方波。

  • 函数原型:
    analogWrite(pin)

  • 参数:

    • pin:输出引脚。

    • value:占空比。介于0和255之间。

  • 返回值:没有。

6. 实验分析

程序中使用
analogWrite()函数,通过两个for循环,逐渐改变LED灯的亮度。两个for循环中都有延时语句,是为了让我们肉眼能观察到亮度调节的效果。

Arduino基础入门篇09—会呼吸的灯
扫码加入微信公众号:TonyCode


原文始发于微信公众号(

TonyCode

):Arduino基础入门篇09—会呼吸的灯

|

发表评论