前言
在前面的学习中,我们学会了如何实现流水灯,也了解了有关按钮的相关知识,可以通过按钮与交通灯这个小实验,将我们所学的知识串通起来,以下是有关该实验的相关介绍。
一、目标实现
在实现交通灯功能的基础上,添加按钮功能,使其实现当按钮处于按下状态时,交通灯开始实行,当按键处于松开状态时,该交通灯循环结束后熄灭。
二、实验器件
- 开发板:arduion
- 按键开关:1 个
- 红色LED灯:1 个
- 黄色LED灯:1 个
- 绿色LED灯:1 个
- 220欧电阻:4 个
- 面包板:1 个
- 多彩杜邦线:若干
三、接线
由于是自己想出的组合功能,并没有具体的接线原理图,大家可以参考流水灯实验与按键实验的相关接线原理图自行组合。
实验接线如图所示
四、代码程序
int Switch = 2; //定义数字2接口为按键的引脚编号
int ledgreen = 5; //定义数字5接口为绿色LED的引脚编号
int ledyellow = 6; //定义数字5接口为黄色LED的引脚编号
int ledred = 7; //定义数字5接口为红色LED的引脚编号
int control = 0; //定义一个变量comtral,用于存储按钮的当前状态
void setup()
{
pinMode(ledgreen, OUTPUT);
pinMode(ledyellow, OUTPUT);
pinMode(ledred, OUTPUT); //定义LED灯接口为输出接口
pinMode(Switch, INPUT); //定义按键接口为输入接口
Serial.begin(9600);
}
void loop()
{
if (digitalRead(Switch) == LOW) //当按钮为按下状态时,执行RUN_traffic()函数
{
RUN_traffic();
delay(200); //通过延时来消抖
}
else
{
digitalWrite(ledgreen, LOW);
digitalWrite(ledyellow, LOW);
digitalWrite(ledred, LOW);
}
}
void RUN_traffic() //交通灯
{
digitalWrite(ledgreen, HIGH); //点亮 绿灯
delay(3000); //延迟 3 秒
digitalWrite(ledgreen, LOW); //熄灭 绿灯
for (int i = 1; i < 4; i++) //闪烁交替 3 次,黄灯闪烁效果
{
delay(500); //延迟 0.5 秒
digitalWrite(ledyellow, HIGH); //点亮 黄灯
delay(1000); //延迟 1 秒
digitalWrite(ledyellow, LOW); //熄灭 黄灯
}
delay(500); //延迟 0.5 秒
digitalWrite(ledred, HIGH); //点亮 红灯
delay(3000); //延迟 3 秒
digitalWrite(ledred, LOW); //熄灭 红灯
delay(1000); //延迟 1 秒,当按键还是按下状态时重新执行交通灯
}
Gitte源码仓库:https://gitee.com/chen_xy_chen/arduion_c.git
五、最终效果
具体效果视频就不在此展示了,感兴趣的伙伴可以自行接线复制代码进行实验。