Codigo fonte 

//declaración de variables

int roxo =  13;   
int ambar =  12;  
int verde =  11; 
int peaton =  2;
int value = 0;
int peaton_verde =  8;
int peaton_roxo =  9;



// O setup só se recorre unha vez cando comeza o programa



void setup()   {               

  // inicializamos as saídas

pinMode(roxo, OUTPUT);  
pinMode(ambar, OUTPUT); 
pinMode(verde, OUTPUT); 
pinMode(peaton_verde, OUTPUT); 
pinMode(peaton_roxo, OUTPUT);

//inicializamos a entrada

pinMode(peaton, INPUT);

}



// o loop() é recorrido continuamente mentras o arduino está aceso.



void loop()                    

{


digitalWrite(verde, HIGH);

digitalWrite(peaton_roxo, HIGH);

digitalWrite(peaton_verde, LOW);

entrada_activada();

espera(); 

digitalWrite(verde, LOW);

digitalWrite(ambar, HIGH); 

entrada_activada();

espera(); 

digitalWrite(ambar, LOW);

digitalWrite(roxo, HIGH);

digitalWrite(peaton_verde, HIGH);

digitalWrite(peaton_roxo, LOW);

entrada_activada();

espera(); 

entrada_activada();

digitalWrite(roxo, LOW);



}



int entrada_activada()

{

value = digitalRead(peaton);



  if (value == HIGH)

 

  {



    digitalWrite(peaton_roxo, LOW);

    digitalWrite(peaton_verde, LOW);

    digitalWrite(ambar, LOW);

    digitalWrite(verde, LOW);

    for (int i=0; i<5;)

    {

    i++;

    ambar_inter();

    delay(200);

    }

  digitalWrite(peaton_verde, LOW);

  value = 0;

  value = digitalRead(peaton);

  }

 

}



int ambar_inter()

{

digitalWrite(peaton_verde, HIGH);

digitalWrite(ambar, HIGH); 

delay(500);                

digitalWrite(ambar, LOW);

delay(500);

}



int espera()

{

  for (int i=0; i<100;)

    {

    i++;

    entrada_activada();

    delay(10);

    }

}