单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:2657|回复:0

带行人通过按钮的交通灯系统

[复制链接]
ID:747774发表于 2020-5-9 17:05|显示全部楼层
此交通信号灯系统加入了人行道行人按钮装置,意在控制交通信号灯时间的变化。具体为:没有行人按下按钮时交通信号灯正常工作。当有行人按下按钮时,将会延长机动车的红灯时间和行人灯的绿灯时间,以便于行人能够安全通过。
  具体效果看参见附件视频。
一、元件介绍

1kΩ电阻5个;
  红色LED2个,绿色LED2个,黄色LED1个
  按键开关1个;
  面包板;
  跳线若干;
二、代码

代码:  
  
int T=0;//按键次数
int t;
void setup() {
   pinMode(2, OUTPUT);//车道红灯
   pinMode(3, OUTPUT);//车道绿灯
   pinMode(4, OUTPUT);//车道黄灯
  
   pinMode(5, OUTPUT);//人道红灯
   pinMode(6, OUTPUT);//人道绿灯

   pinMode(9, INPUT);//按钮
}

// the loop function runs over and over again forever
void loop() {
   int x=0,i=0;
   //第一部分
   for(i=0;i<9;i++)
   {
   digitalWrite(3,1);//车道绿90秒
   digitalWrite(5,1);//人道红90秒
   delay(1000);
     {if(digitalRead(9)==HIGH)
   {T=T+1;}}
   }
   digitalWrite(3,0);
   digitalWrite(5,0);
   //第二部分
   for(i=0;i<3;i++)
   {
   digitalWrite(4,1);//车道黄3秒
   digitalWrite(5,1);//人道红3秒
   delay(1000);
   {if(digitalRead(9)==HIGH)
   {T=T+1;}}
   }
   digitalWrite(4,0);
   digitalWrite(5,0);
   //第三部分
if(T==0)
   {t=3;}
   else
   {t=9;}
   T=0;
   for(i=0;i<t;i++)
   {
   digitalWrite(2,1);//车道红80秒
   digitalWrite(6,1);//人道绿80秒
   delay(1000);
   //T=0;
   {if(digitalRead(9)==HIGH)
   {T=T+1;}}
   }
   digitalWrite(2,0);
   digitalWrite(6,0);
   //第四部分
   for(i=0;i<5;i++)
   {
   digitalWrite(2,1);//车道红10秒
   while(x<=1000){
   digitalWrite(6, 1);   // 人道绿灯闪烁10秒
   delay(500);
            
   digitalWrite(6, 0);  
   delay(500);
   {if(digitalRead(9)==HIGH)
   {T=T+1;}}
   x= x+100;
   }
   }
   digitalWrite(2,0);
   //第五部分
   for(i=0;i<3;i++)
   {
   digitalWrite(2,1);//车道延迟3秒
   digitalWrite(5,1);
   delay(1000);
   {if(digitalRead(9)==HIGH)
   {T=T+1;}}
   }
   digitalWrite(2,0);
   digitalWrite(5,0);
}

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

Powered by 单片机教程网