交通信号灯学习

2015-11-171.9万
AI 快速预览详细 收起
交通信号灯学习项目是一个适合初学者和STEM教育的项目。通过Arduino控制红绿黄三色灯的自动切换,学生可以学习到基本的电路连接和编程知识。项目中,汽车灯和行人灯分别通过不同的引脚控制,通过按钮触发信号灯的切换。此外,还实现了行人在通过时绿灯闪烁的功能。这个项目不仅能够锻炼学生的逻辑思维,还能培养他们的动手能力和创造力。
交通信号灯学习图1
包装盒及配件质量看起来都不错
交通信号灯学习图2


代码
  1. // 汽车灯
  2. int carRed = 12;
  3. int carYellow = 10;
  4. int carGreen = 8;
  5. // 开关
  6. int button = 7;
  7. unsigned long changeTime; // 按钮按下后的时间
  8. // 行人灯
  9. int pedRed = 1;
  10. int pedGreen = 3;
  11. int crossTime = 5000; // 行人通过时间
  12. // 等待变灯时间
  13. int waitTime = 5000;
  14. void setup() {
  15.   setOutput(1);
  16.   setOutput(3);
  17.   setOutput(8);
  18.   setOutput(10);
  19.   setOutput(12);
  20.   // 设置按钮为输入
  21.   pinMode(button, INPUT);
  22.   // 初始状态
  23.   // 汽车
  24.   digitalWrite(carGreen, HIGH);  // 绿灯亮
  25.   // 行人
  26.   digitalWrite(pedRed, HIGH);    // 红灯亮
  27. }
  28. // 设置指定针脚输出
  29. void setOutput(int pin) {
  30.   pinMode(pin, OUTPUT);
  31. }
  32. // 改变信息号灯
  33. void changeLights() {
  34.   // 汽车
  35.   digitalWrite(carGreen, LOW);  // 绿灯灭
  36.   digitalWrite(carYellow, HIGH); // 黄灯亮
  37.   delay(2000);
  38.   digitalWrite(carYellow, LOW); // 黄灯灭
  39.   digitalWrite(carRed, HIGH);   // 红灯亮
  40.   delay(1000);
  41.   // 行人
  42.   digitalWrite(pedRed, LOW);    // 红灯灭
  43.   digitalWrite(pedGreen, HIGH); // 绿灯亮
  44.   // 等待行人通过
  45.   delay(crossTime);
  46.   // 闪烁
  47.   pedLightFlash();
  48.   digitalWrite(pedRed, HIGH); // 红灯亮
  49.   delay(500);
  50.   // 汽车
  51.   digitalWrite(carRed, LOW);    // 红灯灭
  52.   digitalWrite(carYellow, HIGH); // 黄灯亮
  53.   delay(1000);
  54.   digitalWrite(carYellow, LOW); // 黄灯灭
  55.   digitalWrite(carGreen, HIGH); // 绿灯亮
  56.   changeTime = millis();        // 记录上一次灯变化的时间
  57. }
  58. // 行人灯闪烁
  59. void pedLightFlash() {
  60.   for (int i = 0; i < 10; i++) {
  61.     digitalWrite(pedGreen, HIGH);
  62.     delay(250);
  63.     digitalWrite(pedGreen, LOW);
  64.     delay(250);
  65.   }
  66. }
  67. void loop() {
  68.   int state = digitalRead(button);
  69.   if (state == HIGH && (millis() - changeTime) > waitTime) {
  70.     changeLights();
  71.   }
  72. }
复制代码
第一次接线,开关忘记接电阻了,信号灯自动切换,加上电阻就好了,还是不够细心。
产品及文档都不错。继续学习。


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(6)
qq913622228180
qq913622228180
路过………………
venjiang
venjiang
作者
有多少坚持玩的?
luna
luna回复venjiang
我玩了2遍好像,基本的硬件理论掌握了,才是硬件玩家的开始哦~~就可以造自己喜欢的应用了,可以看看这里,有什么激发灵感的~https://mc.dfrobot.com.cn/portal.php?mod=topic&topicid=1
丄帝De咗臂
丄帝De咗臂
又有入门的了
dsweiliang
dsweiliang
开始入门咯~
Juice
Juice
哈哈哈~~~我也是从点灯开始入门的 不过现在依旧是入门阶段
何处不江南
何处不江南
不错不错
- 没有更多了 -