第二课 多个LED的闪烁
    上一节课,我们已经玩了单个led的闪烁,大家应该尝试了各种闪法,当然你肯定不会满足于一盏灯的闪烁,今天我们就来演示怎么让好多的led一起闪。由于学习套件中的模块有限,我们选择其中红、黄、绿三种颜色的LED模块来尝试多个LED一起闪。
    第一步 设计电路
    先要构思好自己的电路设计,因为有3个LED灯模块,所以Arduino要有3个数字输入输出端口来进行控制,本课选择9、10、11号端口来控制三个灯的闪烁,将接线扩展板接至Arduino,通过连线将3个LED灯分别连接至9、10、11号端口,如图所示。
    第二课 多个LED的闪烁 - 图1
    第二步 编写程序
    连接好板子的USB接口,编译下载下面的程序:
    /
    作用:让三个led依次点亮熄灭
    /
    void setup()
    {
    for (int i=9; i<=11; i++) //通过循环的方式设置9、10、11号引脚为输出状态
    {
    pinMode(i,OUTPUT);
    }
    }
    void loop()
    {
    for (int x=9; x<=11; x++) //通过循环的方式依次让每个引脚的led在1秒内完成明灭
    {
    digitalWrite(x,HIGH);
    delay(500);
    digitalWrite(x,LOW);
    delay(500);
    }
    }
    下载好后就可以看见led每半秒一个灯的速度依次闪动,这个就是传说中的流水灯,当然,闪烁的方法千变万化,LED的摆放方式也是千变万化,希望大家自己多思考多研究。
    三、本次实验所用到的语法
    1.void
    void用来声明一个函数,该函数不会返回任何数据。
    //功能在“setup”和“loop”被执行
    //但没有数据被返回到高一级的程序中
    void setup()
    {
    // …
    }
    void loop()
    {
    // …
    }
    2. setup()
    在控制器中程序运行时将首先调用 setup() 函数。用于初始化变量、设置引脚的输出\输入类型、配置串口、引入类库文件等等。每次控制器上电或重启后,setup() 函数只运行一次。
    3. loop( )
    在setup( ) 函数中初始化和定义了变量,然后执行 loop( ) 函数。顾名思义,该函数在程序运行过程中不断的循环,根据一些反馈,相应改变执行情况。通过该函数动态控制控制器的各项操作。
    4.pinMode( )
    将指定的引脚配置成输出或输入。
    语法
    pinMode(pin,mode)
    参数
    pin:要设置模式的引脚
    mode:INPUT(输入)或OUTPUT(输出)或ANALOG(模拟量)
    5.digitalWrite( )
    给一个数字引脚写入HIGH或者LOW。
    如果一个引脚已经使用pinMode( )配置为OUTPUT模式,其电压将被设置为相应的值,HIGH为5V,LOW为0V。
    注意:数字13号引脚不能作为数字输入使用
    语法
    digitalWrite(pin,value)
    参数
    pin:引脚编号(如1,5,10,A0,A3)
    value: HIGH or LOW
    6.delay( )
    使程序暂定设定的时间(单位毫秒)。(一秒等于1000毫秒)
    语法
    delay(ms)
    参数
    ms:暂停的毫秒数(unsigned long)
    7.for
    for语句用于重复执行一段在花括号之内的代码。通常使用一个增量计数器计数并终止循环。for语句用于重复性的操作非常有效,通常与数组结合起来使用来操作数据、引脚。
    for循环开头有3个部分:
    for(初始化;条件;增量计数){
    //语句
    }
    “初始化”只在循环开始执行一次。每次循环,都会检测一次条件;如果条件为真,则执行语句和“增量计数”,之后再检测条件。当条件为假时,循环终止。
    8. int
    整数是基本数据类型,占用2字节。整数的范围为-32,768到32,767(-2^15 ~(2^15)-1)。
    整数类型使用2的补码方式存储负数。最高位通常为符号位,表示数的正负。其余位被“取反加1”。
    9.++
    递增/递减复合运算符,递增或递减一个变量
    语法:
    x++; //x自增1返回x的旧值
    ++x; // x自增1返回x的新值,前自增,先自增,自增之后再使用(相当于x=x+1),使用的是新值
    x—; // x自减1返回x的旧值
    —x; //x自减1返回x的新值
    参数:
    x: int或long(可能是unsigned)
    返回
    变量进行自增/自减操作后的原值或新值。
    例子
    x = 2;
    y = ++x; // 前自增,先自增,自增之后再使用(相当于x=x+1),使用的是新值,现在x=3,y=3
    y = x—; // 后自增,先使用,使用完后再自增,使用的是旧值,现在x=2,y还是3
    10.比较运算符
    比较运算操作符:
    x == y(x 等于 y)
    x != y(x 不等于 y)
    x < y(x 小于 y)
    x > y(x 大于 y)
    x <= y(x 小于等于 y)
    x >= y(x 大于等于 y)
    11. 数字引脚(Digital pins)定义,INPUT和OUTPUT
    数字引脚当作 INPUT 或 OUTPUT都可以 。用pinMode()方法使一个数字引脚从INPUT到OUTPUT变化。
    引脚(Pins)配置为输入(Inputs)
    通过pinMode()配置为 输入(INPUT),在此模式下它们非常利于读取传感器,而不是为LED供电。
    引脚(Pins)配置为输出(Outputs)
    引脚通过pinMode()配置为 输出(OUTPUT),在此模式下它们可以为电路提供充足的电流,向其他设备/电路提供(提供正电流positive current)或倒灌(提供负电流negative current)达40毫安(mA)的电流。使它们利于给LED供电,而不是读取传感器。输出(OUTPUT)引脚被短路的接地或5V电路上会受到损坏甚至烧毁。引脚在为继电器或电机供电时,由于电流不足,将需要一些外接电路来实现供电。