int c=0,nc=0,ec=0,n=0,e=0,w=0,s=0;
int Redn=13,yellown=12,greenn=32,Reds=15,yellows=2,greens=4,Rede=23,yellowe=22,greene=21,Redw=33,yelloww=25,greenw=26;
int pinn=18,pinw=27,pine=5,pins=14;
void north()
{
if(nc==0)
{
digitalWrite(Reds,0);
digitalWrite(Redn,0);
digitalWrite(greene,0);
digitalWrite(greenw,0);
digitalWrite(yellowe,1);
digitalWrite(yellown,1);
digitalWrite(yellows,1);
digitalWrite(yelloww,1);
delay(500);
digitalWrite(yellowe,0);
digitalWrite(yellown,0);
digitalWrite(yellows,0);
digitalWrite(yelloww,0);
digitalWrite(Rede,1);
digitalWrite(Redw,1);
digitalWrite(greenn,1);
digitalWrite(greens,1);
delay(4000);
}
nc=1;
ec=0;
}
void east()
{
if(ec==0)
{
digitalWrite(Rede,0);
digitalWrite(Redw,0);
digitalWrite(greens,0);
digitalWrite(greenn,0);
digitalWrite(yellowe,1);
digitalWrite(yellown,1);
digitalWrite(yellows,1);
digitalWrite(yelloww,1);
delay(500);
digitalWrite(yellowe,0);
digitalWrite(yellown,0);
digitalWrite(yellows,0);
digitalWrite(yelloww,0);
digitalWrite(Redn,1);
digitalWrite(Reds,1);
digitalWrite(greene,1);
digitalWrite(greenw,1);
delay(4000);
}
nc=0;
ec=1;
}
void saver()
{
nc=0;
ec=0;
}
void setup()
{
pinMode(Redn,OUTPUT);
pinMode(yellown,OUTPUT);
pinMode(greenn,OUTPUT);
pinMode(Rede,OUTPUT);
pinMode(yellowe,OUTPUT);
pinMode(greene,OUTPUT);
pinMode(Redw,OUTPUT);
pinMode(yelloww,OUTPUT);
pinMode(greenw,OUTPUT);
pinMode(Reds,OUTPUT);
pinMode(yellows,OUTPUT);
pinMode(greens,OUTPUT);
pinMode(pinn,INPUT);
pinMode(pine,INPUT);
pinMode(pins,INPUT);
pinMode(pinw,INPUT);
}
void loop()
{
n=digitalRead(pinn);
s=digitalRead(pins);
e=digitalRead(pine);
w=digitalRead(pinw);
if(n==0 and s==0 and e==0 and w==0)
saver();
else if(n==0 and s==0 and (w==1 or e==1))
east();
else if(w==0 and e==0 and (n==1 or s==1))
north();
else if((n+e)==2 or (n+w)==2 or (s+w)==2 or (s+e)==2)
if(c==0)
{
north();
c=1;
}
else
{
east();
c=0;
}
}