美文网首页Arduino--菜鸟之家
第二课.会呼吸的灯

第二课.会呼吸的灯

作者: MT521 | 来源:发表于2019-07-31 14:26 被阅读45次

    一.计算机如何表示颜色

    在日常生活中人类是可以辨别不同颜色的,那么到底为什么会有不同的颜色呢?计算机为什么可以用数字来表示颜色呢?

    1.物体显示颜色的原因:

    物体的颜色取决于它发射或反射的光线,而光线具有不同的波长,不同波长的光线就具有不同的颜色,下图就是光的波长和颜色的关系,我们称之为光谱,是不是像彩虹?

    光谱

    2.人类为什么可以看到不同的颜色?

    人类能感知颜色,是因为人类的眼睛具有特殊的细胞称之为视锥细胞,我们具有三种视锥细胞,分别检测红色、蓝色、绿色。因此,我们看到的任何一种颜色其实都是这三种颜色合成的,我们称之为三基色。

    三基色
    光的三基色:红色、蓝色、绿色
    通过上图可以看出:如果三种颜色都没有,就显示黑色,但三种颜色都有就显示白色,当红色和绿色合在一起就是黄色。你可以通过调整三基色的强度合成任何一种颜色。

    3.计算机表示颜色的方法

    • 计算机将所有的东西都存储为0和1,这些0和1通常被组织成8个称为字节的集合。一个字节表示0到255之间任意值。
    • 当我们想要在计算机程序中表现一种颜色时,我们可以通过定义构成该颜色的红色,蓝色和绿色的值来实现这一点。这些值通常存储为一个字节,取值范围为0到255。

    二.什么是模拟信号?

    • 数字信号是以0、1表示的电平不连续变化的信号。
    • 模拟信号则是用连续变化的物理量来表示信息的,信号随着时间连续变化。在我们生活中接触到的大多数都是模拟信号,例如声音、光照、温度的变化等。
      在我们的Uno R3开发板上,第3、5、6、9、10、11引脚具有PWM(Pulse Width Modulation脉冲宽度调制)功能。可以将数字信号转变为模拟信号。

    三.LED的种类

    LED灯珠 LED灯带

    三基色LED

    RGB三色灯就是由内部三个不同颜色的灯珠组成的一个灯。RGB灯分为共阴和共阳两种。我们通过控制三个灯两端的电压值可以控制灯的发光亮度,然后组合,让RGB灯发出不同颜色的光。

    • 共阴极RGB LED,四个引脚中最长的那个为阴极(负极)。其他三个分别为,红灯(R),蓝灯(B),绿灯(G)的阳极(负极)。如下图所示:


      共阴极RGB LED
    • 共阳极RGB LED,四个引脚中最长的为阳极(正极)。其他三分别为,红灯(R),蓝灯(B),绿灯(G)的阴极(负极)。如下图所示: 共阳极RGB LED

    四.制作呼吸灯

    1.准备器材

    名称 实物图 数量
    主控板 1
    面包板 1
    RGB LED 1
    220欧姆电阻 1
    导线 若干

    2.画电路图

    呼吸灯电路图

    3.连接实物图

    实物连接图

    4.程序设计

    注意:我们使用的是共阴极RGB LED
    1.先找出红灯
    2.找出哪个数字最亮哪个数字最暗
    3.让红灯和绿灯一起亮
    4.让红灯从亮到暗再到亮
    5.如何让三个灯按照红绿蓝的效果依次展现亮灭的效果

    模块代码展示:

    程序设计

    英文代码展示:

    void setup(){
     pinMode(11,OUTPUT);
     pinMode(10,OUTPUT);
     pinMode(9,OUTPUT);
    }
    
    void loop(){
      for (int i = 0; i <= 255; i = i + (1)) {
        analogWrite(11,i);
        delay(100);
      }
      for (int i = 255; i >= 0; i = i + (-1)) {
        analogWrite(11,i);
        delay(100);
      }
      for (int i = 0; i <= 255; i = i + (1)) {
        analogWrite(10,i);
        delay(100);
      }
      for (int i = 255; i >= 0; i = i + (-1)) {
        analogWrite(10,i);
        delay(100);
      }
      for (int i = 0; i <= 255; i = i + (1)) {
        analogWrite(9,i);
        delay(100);
      }
      for (int i = 255; i >= 0; i = i + (-1)) {
        analogWrite(9,i);
        delay(100);
      }
    
    }
    

    相关文章

      网友评论

        本文标题:第二课.会呼吸的灯

        本文链接:https://www.haomeiwen.com/subject/wngarctx.html