找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6039|回復(fù): 6
收起左側(cè)

點(diǎn)陣綜合智能交通燈 Arduino實(shí)驗(yàn)

[復(fù)制鏈接]
ID:549815 發(fā)表于 2019-12-18 09:36 | 顯示全部樓層 |閱讀模式
(1)機(jī)動(dòng)車(chē)道紅綠燈改成點(diǎn)陣(6×6/5×5)顯示成箭頭形狀,采用閃爍或者流水顯示。
(2)箭頭用于指示南北(豎)或東西(橫)方向綠燈,即箭頭會(huì)隨著南北或者東西方向綠燈變化而呈90度轉(zhuǎn)向。
(3)增加?xùn)|西方向的人行道紅綠燈控制,常亮紅燈。當(dāng)檢測(cè)到有人時(shí)(用光敏電阻),人行道的紅綠燈要隨著(下一輪)同向的交通燈變化。
(4) 兩組的兩塊面包板并排共用。

源程序在此分享(LiJishao)

Arduino源程序如下:
  1. #include <MsTimer2.h>               //定時(shí)器庫(kù)的 頭文件

  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);   //設(shè)定數(shù)字I/O腳為輸出
  30. }
  31. red_close();
  32.   
  33. MsTimer2::set(5, flash);        // 中斷設(shè)置函數(shù),每 5ms 進(jìn)入一次中斷
  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) //按鍵觸發(fā)后
  108.           {
  109.                   if(flag_up==0)
  110.             {
  111.         
  112.         
  113.               digitalWrite(redled_1, LOW);//熄滅東西路紅燈
  114.               digitalWrite(greenled_1, HIGH); //點(diǎn)亮東西路綠燈
  115.               digitalWrite(greenled_3, HIGH); //熄滅人行道綠燈
  116.               digitalWrite(redled_3, LOW);//點(diǎn)亮人行道紅燈(默認(rèn)情況下,是紅燈亮)
  117.               //flag_up++;
  118.               if(flag_led)
  119.                 {up();}
  120.                 else
  121.                 {red_close();}
  122.               
  123.               }
  124.               //delay(2000);//延時(shí)12秒
  125.               else
  126.               {
  127.               digitalWrite(greenled_1, LOW); //熄滅東西路綠燈
  128.               digitalWrite(redled_1, HIGH);//點(diǎn)亮東西路紅燈
  129.               digitalWrite(greenled_3, LOW);//熄滅人行道綠燈
  130.               digitalWrite(redled_3, HIGH);//點(diǎn)亮人行道紅燈
  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;//按鍵標(biāo)志清零
  145.          
  146.           }
  147.   
  148.          
  149.    
  150.     else    //按鍵未被觸發(fā),默認(rèn)狀態(tài)
  151.     {
  152.    
  153.       
  154.           if(flag_up==0)
  155.           {
  156.       
  157.       
  158.             digitalWrite(redled_1, LOW);//熄滅東西路紅燈
  159.             digitalWrite(greenled_1, HIGH); //點(diǎn)亮東西路綠燈
  160.             digitalWrite(greenled_3, LOW); //熄滅人行道綠燈
  161.             digitalWrite(redled_3, HIGH);//點(diǎn)亮人行道紅燈(默認(rèn)情況下,是紅燈亮)
  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);//點(diǎn)亮東西路紅燈
  173.             digitalWrite(greenled_3, LOW);//熄滅人行道綠燈
  174.             digitalWrite(redled_3, HIGH);//點(diǎn)亮人行道紅燈
  175.             if(flag_led)
  176.             {right();}
  177.             else
  178.             {red_close();}
  179.          }
  180.          // delay(2000);//延時(shí)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. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2019-12-18 15:54 | 顯示全部樓層
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說(shuō)明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

ID:662583 發(fā)表于 2019-12-31 14:40 | 顯示全部樓層
很贊,這個(gè)挺實(shí)用的
回復(fù)

使用道具 舉報(bào)

ID:634392 發(fā)表于 2020-8-21 08:56 | 顯示全部樓層
很棒很實(shí)用的程序,十分有參考價(jià)值
回復(fù)

使用道具 舉報(bào)

ID:713568 發(fā)表于 2021-5-29 08:12 | 顯示全部樓層
感謝樓主的分享,很有用的程序
回復(fù)

使用道具 舉報(bào)

ID:928973 發(fā)表于 2021-5-29 10:06 | 顯示全部樓層
為什么我這里顯示編譯有誤?
回復(fù)

使用道具 舉報(bào)

ID:995222 發(fā)表于 2021-12-21 15:28 來(lái)自手機(jī) | 顯示全部樓層
這個(gè)有錯(cuò)誤(不會(huì)是電科的師哥吧。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表