此交通信號燈系統加入了人行道行人按鈕裝置,意在控制交通信號燈時間的變化。具體為:沒有行人按下按鈕時交通信號燈正常工作。當有行人按下按鈕時,將會延長機動車的紅燈時間和行人燈的綠燈時間,以便于行人能夠安全通過。
具體效果看參見附件視頻。
一、元件介紹
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);
}
|