找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2380|回复: 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 单片机教程网

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