实验三 多彩的LED

实验三 多彩的LED

 

一、实验目的

通过本实验,熟悉Arduino程序设计的基本语法及对电路板各端口电压的读取和写入方法,能通过开关控制LED灯的亮起和熄灭。

 

二、实验要求

 1、使用ESP 8266电路板、LED灯、开关、电阻及导线搭建实验电路,并编写相应程序实现开关控制LED灯的闪烁效果:不按开关时绿灯亮,按下开关时2盏红灯闪烁。

 2、修改上述实验中的电路及程序代码,实现模拟交通信号灯的效果。

 

三、实验过程

 1、开关控制的闪烁LED

1)分别使用导线将电路板3V3连接到面包板电源正极总线,将GND连接到面包板电源负极总线。

2)放置1个绿色LED2个红色LED在面包板上,注意各针脚均需要在不同行上,分别使用31K电阻连接各LED的负极(较短的针脚)与面包板电源负极总线。

3)使用导线将绿色LED的正极(较长的针脚)连接到电路板的D5GPIO14)口;使用导线将中间红色LED的正极连接到电路板的D6GPIO12)口;使用导线将另一个红色LED的正极连接到电路板的D7GPIO13)口。

4)放置1个开关横跨在面包板中间小沟上,其中一个针脚使用导线连接到面包板电源正极,另一个针脚使用导线连接到电路板D0GPIO16)口。电路连接如图所示。

3-1实验电路连接图

5)在新建的Arduino程序窗口中输入如下代码:

//初始化各接口

void setup() {

  pinMode(14, OUTPUT);//D5(GPIO14)接绿色LED,设置为输出

  pinMode(12, OUTPUT);//D6(GPIO12)接中间红色LED,设置为输出

  pinMode(13, OUTPUT);//D7(GPIO13)接外侧红色LED,设置为输出

  pinMode(16, OUTPUT);//D0(GPIO16)接开关,设置为输出

}

//循环调用

void loop() {

  //读取端口16的状态,当为低电平(即开关没有按下)时

  if(digitalRead(16)==LOW) {

    //绿灯亮,两盏红灯不亮

    digitalWrite(14, HIGH);

    digitalWrite(12, LOW);

    digitalWrite(13, LOW);

  }

  //当开关按下时

  else {

    //绿灯灭,D7接口红灯亮,持续0.5

    digitalWrite(14, LOW);

    digitalWrite(12, LOW);

    digitalWrite(13, HIGH);

    delay(500);  

    //D7接口红灯灭,D6接口红灯亮,持续0.5

    digitalWrite(13, LOW);

    digitalWrite(12, HIGH);

    delay(500);

  }

}

6)将USB线缆插入计算机,上传程序后观察LED变化情况。

该实验的结果是:初始状态绿色LED亮,2个红色LED灭,当按下开关时,绿色LED熄灭,2个红色LED交替点亮和熄灭(亮灭状态每次持续0.5秒)。

 2、交通红绿灯

1)将前1个实验中的3LED灯拆下,在原绿色LED的位置放置1个红色LED,原中间红色LED的位置放置一个黄色LED,另一个位置放置一个绿色LED,其余接线不变。

2)在新建的Arduino程序窗口中输入如下代码:

//初始化各接口

void setup() {

  pinMode(14, OUTPUT);//D5(GPIO14)接红色LED,设置为输出

  pinMode(12, OUTPUT);//D6(GPIO12)接黄色LED,设置为输出

  pinMode(13, OUTPUT);//D7(GPIO13)接绿色LED,设置为输出

  pinMode(16, OUTPUT);//D0(GPIO16)接开关,设置为输出

}

//循环调用

void loop() {

  //读取端口16的状态,当为低电平(即开关没有按下)时

  if(digitalRead(16)==LOW) {

    //红灯、绿灯不亮,黄灯持续闪烁

    digitalWrite(13, LOW);  

    digitalWrite(14, LOW);

    digitalWrite(12, HIGH);     

    delay(500);  

    digitalWrite(12, LOW);

    delay(500);  

  }

  //当开关按下时

  else {

    //红灯亮,持续3

    digitalWrite(12, LOW);     

    digitalWrite(13, LOW);  

    digitalWrite(14, HIGH);

    delay(3000);

    //红灯、黄灯一起亮,持续1

    digitalWrite(12, HIGH);     

    digitalWrite(13, LOW);  

    digitalWrite(14, HIGH);

    delay(1000);

    //绿灯亮,持续3

    digitalWrite(12, LOW);     

    digitalWrite(13, HIGH);  

    digitalWrite(14, LOW);

    delay(3000);

    //绿灯闪烁3

    digitalWrite(13, LOW);

    delay(500);

    digitalWrite(13, HIGH);

    delay(500);

    digitalWrite(13, LOW);

    delay(500);

    digitalWrite(13, HIGH);

    delay(500);

    digitalWrite(13, LOW);

    delay(500);

    digitalWrite(13, HIGH);

    delay(500);

    //黄灯亮,持续1

    digitalWrite(13, LOW);

    digitalWrite(12, HIGH);

    delay(1000);

  }

}

6)将USB线缆插入计算机,上传程序后观察LED变化情况。

该实验的结果是:初始状态黄色LED持续闪烁,当按下开关时,红色LED亮起3秒,然后红色黄色LED一起亮起1秒,之后绿色LED亮起3秒,在绿色LED闪烁3次后黄灯亮起1秒,如此循环,模拟现实中的交通信号灯状态。

 

四、实验扩展

 1、可以更换电路板上连接LED的接口,但在程序代码中应注意各接口的号码。

 2、可以通过修改程序代码实现各种LED亮灭的效果,例如霓虹灯、电子显示屏等。