此交通信号灯系统加入了人行道行人按钮装置,意在控制交通信号灯时间的变化。具体为:没有行人按下按钮时交通信号灯正常工作。当有行人按下按钮时,将会延长机动车的红灯时间和行人灯的绿灯时间,以便于行人能够安全通过。
具体效果看参见附件视频。
代码:
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);
}
具体效果看参见附件视频。
一、元件介绍
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);
}