找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4970|回复: 6
打印 上一主题 下一主题
收起左侧

点阵综合智能交通灯 Arduino实验

[复制链接]
跳转到指定楼层
楼主
ID:549815 发表于 2019-12-18 09:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
(1)机动车道红绿灯改成点阵(6×6/5×5)显示成箭头形状,采用闪烁或者流水显示。
(2)箭头用于指示南北(竖)或东西(横)方向绿灯,即箭头会随着南北或者东西方向绿灯变化而呈90度转向。
(3)增加东西方向的人行道红绿灯控制,常亮红灯。当检测到有人时(用光敏电阻),人行道的红绿灯要随着(下一轮)同向的交通灯变化。
(4) 两组的两块面包板并排共用。

源程序在此分享(LiJishao)

Arduino源程序如下:
  1. #include <MsTimer2.h>               //定时器库的 头文件

  2. int led1=1;
  3. int led3=11;//本在2
  4. int led4=3;
  5. int led8=4;
  6. int led9=5;
  7. int led10=6;
  8. int led12=7;
  9. int led13=8;
  10. int led14=9;
  11. int led6=10;
  12. int redled_1 =12;
  13. int greenled_1 =13;
  14. int redled_3 =0;
  15. int greenled_3 =2;
  16. int input=0;
  17. int val=0;

  18. int t=1;
  19. int num=0;

  20. int flag=0;
  21. int flag_up=0;
  22. int flag_led=0;

  23. int num_flag=0;


  24. int flag_end=0;

  25. void setup() {
  26. pinMode(input,OUTPUT);
  27. for (int i = 0; i < 14; i ++)
  28. {
  29. pinMode(i, OUTPUT);   //設定數字I/O腳為輸出
  30. }
  31. red_close();
  32.   
  33. MsTimer2::set(5, flash);        // 中断设置函数,每 5ms 进入一次中断
  34. MsTimer2::start();  
  35. }

  36. void loop() {

  37. //up();
  38. rgb();


  39. }

  40. void red_close(){
  41. digitalWrite(led13,  HIGH);
  42. digitalWrite(led3,  HIGH);
  43. digitalWrite(led4,  HIGH);
  44. digitalWrite(led10,  HIGH);
  45. digitalWrite(led6,  HIGH);
  46. digitalWrite(led9,LOW);
  47. digitalWrite(led14,LOW);
  48. digitalWrite(led8,LOW);
  49. digitalWrite(led12,LOW);
  50. digitalWrite(led1,LOW);
  51.   }


  52. void up(){
  53.   digitalWrite(led13,LOW);
  54. digitalWrite(led8,  HIGH);
  55. delay(t);
  56. red_close();


  57. digitalWrite(led3,LOW);
  58. digitalWrite(led14,  HIGH);
  59. delay(t);

  60. red_close();

  61. digitalWrite(led4,LOW);
  62. digitalWrite(led9,  HIGH);
  63. digitalWrite(led14,  HIGH);
  64. digitalWrite(led8,  HIGH);
  65. digitalWrite(led12,  HIGH);
  66. digitalWrite(led1,  HIGH);
  67. delay(t);
  68. red_close();

  69. digitalWrite(led10,LOW);
  70. digitalWrite(led14,  HIGH);
  71. delay(t);
  72. red_close();

  73. digitalWrite(led6,LOW);
  74. digitalWrite(led8,  HIGH);
  75. delay(t);
  76. red_close();
  77.   }


  78. void right()
  79. {
  80. digitalWrite(led13,LOW);
  81. digitalWrite(led8,  HIGH);
  82. delay(t);
  83. red_close();


  84. digitalWrite(led3,LOW);
  85. digitalWrite(led8,  HIGH);
  86. delay(t);

  87. red_close();

  88. digitalWrite(led4,LOW);
  89. digitalWrite(led9,  HIGH);
  90. digitalWrite(led8,  HIGH);
  91. digitalWrite(led1,  HIGH);
  92. delay(t);
  93. red_close();

  94. digitalWrite(led10,LOW);
  95. digitalWrite(led14,  HIGH);
  96. digitalWrite(led8,  HIGH);
  97. digitalWrite(led12,  HIGH);
  98. delay(t);
  99. red_close();

  100. digitalWrite(led6,LOW);
  101. digitalWrite(led8,  HIGH);
  102. delay(t);
  103. red_close();  
  104.   }



  105. void rgb(){
  106.     {
  107.           if(flag==1) //按键触发后
  108.           {
  109.                   if(flag_up==0)
  110.             {
  111.         
  112.         
  113.               digitalWrite(redled_1, LOW);//熄灭东西路红灯
  114.               digitalWrite(greenled_1, HIGH); //点亮东西路绿灯
  115.               digitalWrite(greenled_3, HIGH); //熄灭人行道绿灯
  116.               digitalWrite(redled_3, LOW);//点亮人行道红灯(默认情况下,是红灯亮)
  117.               //flag_up++;
  118.               if(flag_led)
  119.                 {up();}
  120.                 else
  121.                 {red_close();}
  122.               
  123.               }
  124.               //delay(2000);//延时12秒
  125.               else
  126.               {
  127.               digitalWrite(greenled_1, LOW); //熄灭东西路绿灯
  128.               digitalWrite(redled_1, HIGH);//点亮东西路红灯
  129.               digitalWrite(greenled_3, LOW);//熄灭人行道绿灯
  130.               digitalWrite(redled_3, HIGH);//点亮人行道红灯
  131.               //flag_up=4;
  132.               if(flag_led)
  133.               {right();
  134.               flag_end++;}
  135.               else
  136.               {red_close();}
  137.            }
  138.            
  139.                    if(flag_end==1500)
  140.                 {
  141.                   flag=0;
  142.                   flag_end=0;
  143.                   }
  144.           // flag=0;//按键标志清零
  145.          
  146.           }
  147.   
  148.          
  149.    
  150.     else    //按键未被触发,默认状态
  151.     {
  152.    
  153.       
  154.           if(flag_up==0)
  155.           {
  156.       
  157.       
  158.             digitalWrite(redled_1, LOW);//熄灭东西路红灯
  159.             digitalWrite(greenled_1, HIGH); //点亮东西路绿灯
  160.             digitalWrite(greenled_3, LOW); //熄灭人行道绿灯
  161.             digitalWrite(redled_3, HIGH);//点亮人行道红灯(默认情况下,是红灯亮)
  162.             //flag_up++;
  163.             if(flag_led)
  164.               {up();}
  165.               else
  166.               {red_close();}
  167.             
  168.             }
  169.             else
  170.             {
  171.             digitalWrite(greenled_1, LOW); //熄灭东西路绿灯
  172.             digitalWrite(redled_1, HIGH);//点亮东西路红灯
  173.             digitalWrite(greenled_3, LOW);//熄灭人行道绿灯
  174.             digitalWrite(redled_3, HIGH);//点亮人行道红灯
  175.             if(flag_led)
  176.             {right();}
  177.             else
  178.             {red_close();}
  179.          }
  180.          // delay(2000);//延时12秒
  181.   
  182.      
  183.     }
  184.   }
  185. }

  186. void flash()
  187. {
  188. num++;  
  189. val=analogRead(input);// 读取传感器的模拟值并赋值给val
  190. if(val>=1000)
  191. flag=1;
  192. if(num==100)
  193. {
  194.     flag_led=~flag_led;
  195.     num=0;
  196.     num_flag++;
  197.     if(num_flag==30)
  198.         {
  199.           num_flag=0;
  200.           flag_up=~flag_up;
  201.       
  202.           }
  203.     }
  204. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2019-12-18 15:54 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

板凳
ID:662583 发表于 2019-12-31 14:40 | 只看该作者
很赞,这个挺实用的
回复

使用道具 举报

地板
ID:634392 发表于 2020-8-21 08:56 | 只看该作者
很棒很实用的程序,十分有参考价值
回复

使用道具 举报

5#
ID:713568 发表于 2021-5-29 08:12 | 只看该作者
感谢楼主的分享,很有用的程序
回复

使用道具 举报

6#
ID:928973 发表于 2021-5-29 10:06 | 只看该作者
为什么我这里显示编译有误?
回复

使用道具 举报

7#
ID:995222 发表于 2021-12-21 15:28 来自手机 | 只看该作者
这个有错误(不会是电科的师哥吧!)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表