校园内正在进行大礼堂(食堂)改造工程,大型车辆进出频繁,能否在项目一的基础上,设计一款危险警示灯呢?

面包板跳线

如果在面包板上,只使用杜邦线连接,会显得非常杂乱无序。如下图所示。
image.png
为了让线路连接更美观可靠,我们使用面包板跳线与杜邦线配合进行连接。
4.信号输出:危险警示灯 - 图2
一般来说,超短连接适合使用面包板跳线,尤其是长度在10格以内的。
如果长度较长,需要频繁插接的线缆,仍然建议使用杜邦线连接。

实例6:具有六盏灯的危险警示装置

【实验说明】
利用程序代码,点亮六盏普通LED,并使他们闪烁发光。
【材料准备】
已经通电的UNO板,470电阻5只,发光二极管6只,杜邦线两根,面包板跳线若干。
【马上行动】

1.硬件连接

image.png

2.程序设计

  1. /*
  2. * Led_Flash
  3. * 依次点亮1~6号LED灯,依次熄灭6~1号LED灯,如此循环
  4. */
  5. int ledPin1 = 1;
  6. int ledPin2 = 2;
  7. int ledPin3 = 3;
  8. int ledPin4 = 4;
  9. int ledPin5 = 5;
  10. int ledPin6 = 6;
  11. void setup()
  12. {
  13. pinMode(ledPin1,OUTPUT);
  14. pinMode(ledPin2,OUTPUT);
  15. pinMode(ledPin3,OUTPUT);
  16. pinMode(ledPin4,OUTPUT);
  17. pinMode(ledPin5,OUTPUT);
  18. pinMode(ledPin6,OUTPUT);
  19. }
  20. void loop()
  21. {
  22. digitalWrite(ledPin1,HIGH);
  23. delay(100);
  24. digitalWrite(ledPin2,HIGH);
  25. delay(100);
  26. digitalWrite(ledPin3,HIGH);
  27. delay(100);
  28. digitalWrite(ledPin4,HIGH);
  29. delay(100);
  30. digitalWrite(ledPin5,HIGH);
  31. delay(100);
  32. digitalWrite(ledPin6,HIGH);
  33. delay(100);
  34. digitalWrite(ledPin1,LOW);
  35. delay(100);
  36. digitalWrite(ledPin2,LOW);
  37. delay(100);
  38. digitalWrite(ledPin3,LOW);
  39. delay(100);
  40. digitalWrite(ledPin4,LOW);
  41. delay(100);
  42. digitalWrite(ledPin5,LOW);
  43. delay(100);
  44. digitalWrite(ledPin6,LOW);
  45. delay(100);
  46. }

【思考】如此完成任务,是否有点繁琐呢?如果需要点亮更多的LED用于警示,难道只能这样来操作吗?有没有更好的方案?

  1. /*
  2. * Led_Flash
  3. * 依次点亮1~6号LED灯,依次熄灭6~1号LED灯,如此循环
  4. */
  5. int delayTime = 200;//定义间隔时间delayTime为变量,默认值为200
  6. int ledPin;//定义ledPin变量,没有默认值
  7. void setup()
  8. {
  9. for (ledPin = 1; ledPin < 7; ledPin++) //依次设置1~6个数字引脚为输出模式
  10. {
  11. pinMode(ledPin, OUTPUT); //设置第ledPin个引脚为输出模式
  12. }
  13. }
  14. void loop()
  15. {
  16. for (ledPin = 1; ledPin < 7; ledPin++) //每隔delayTime依次点亮1~6引脚相连的led灯
  17. {
  18. digitalWrite(ledPin, HIGH); //点亮ledPin引脚相连的led灯
  19. delay(delayTime);//延时delayTime
  20. }
  21. for (ledPin = 6; ledPin > 0; ledPin--) //每隔delayTime依次熄灭6~1引脚相连的led灯
  22. {
  23. digitalWrite(ledPin, LOW); //熄灭ledPin引脚相连的led灯
  24. delay(delayTime);//延时delayTime
  25. }
  26. }

循环语句

刚才我们用到了For循环语句,可以使我们的程序大大简化。他的基本格式如下:
image.png
for循环的顺序是:
第一轮:1->2->3->4
第二轮:2->3->4

直到2不成立,则for循环结束。

参考资料:循环控制语句整理

序号 循环及描述
1 while循环
while循环将会连续、无限循环,直到括号()内的表达式变为false。必须用一些东西改变被测试的变量,否则while循环永远不会退出。
2 do…while循环
do … while循环类似于while循环。在while循环中,循环连续条件在循环开始时测试,然后再执行循环体。
3 for循环
for循环执行语句预定的次数。循环的控制表达式在for循环括号内完全的初始化,测试和操作。
4 嵌套循环
C语言允许你在另一个循环内使用一个循环。下面的例子说明了这个概念。
5 无限循环
它是没有终止条件的循环,因此循环变为无限。

比较运算符

在for循环中,常常会使用一些比较运算符,用作判断。
image.png

练习(自制信号灯)

施工车辆频繁穿梭中山路,依靠信号灯,我们得以安全出行,请你观察中山路艾尚天地门口的信号灯设置逻辑,使用三个LED,用3个Arduino的数字口来控制。
image.png

参考资料:三种基本控制结构

顺序结构
顾名思义,就是按照所写代码的书写顺序、从上到下的顺序来执行。
分支结构
有选择的来执行语句,如果条件为真执行语句1,如果条件为假执行语句2。
image.png
循环结构
循环,就是执行一段重复的代码。当满足表达式的条件时,会执行语句块,什么时候条件不满足了,就终止。但程序有可能一次都不执行。在前文中介绍到的“For”结构就是典型的循环结构
image.png
其他常见控制语句

序号 控制语句和描述
1 If 语句
它采用括号中的表达式,后面跟随语句或语句块。如果表达式为真,则执行语句或语句块,否则跳过这些语句。
2 If … else 语句
一个 if 语句后面可以跟随一个可选的else语句,当表达式为false时执行。
3 If … else if … else 语句
if 语句后面可以跟随一个可选的 else if … else 语句,其对于测试各种条件非常有用。
4 switch case 语句
类似于if语句, switch … case 通过允许程序员指定应在各种条件下执行的不同代码来控制程序的流程。

[

](https://blog.csdn.net/weixin_43319713/article/details/108277740)