// c++
#define carro_vermelho 19
#define carro_amarelo 18
#define carro_verde 5
#define pedestre_verde 15
#define pedestre_vermelho 2
#define botao 21
// variavel para "for"
int contador;
void setup() {
// put your setup code here, to run once:
Serial.begin (115200);
//Definição se os pinos são saídas ou entradas
pinMode (carro_vermelho, OUTPUT);
pinMode (carro_amarelo, OUTPUT);
pinMode (carro_verde, OUTPUT);
pinMode (pedestre_vermelho, OUTPUT);
pinMode (pedestre_verde, OUTPUT);
pinMode (botao, INPUT);
//Desliga tudo para comecar
digitalWrite(carro_vermelho, LOW);
digitalWrite(carro_amarelo, LOW);
digitalWrite (carro_verde, LOW);
digitalWrite (pedestre_verde, LOW);
digitalWrite (pedestre_vermelho, LOW);
Serial.println ("LIBERADO PARA O MOTORISTA");
}
void loop() {
Serial.println ((String)"valor: "+ digitalRead (botao));
//farol verde dos veiculos sempre esta acesso enquanto o botao nao for acionado
while (digitalRead (botao)==1){
digitalWrite (carro_verde, 1);
digitalWrite (pedestre_vermelho,1);
//sequencia do semaforo
if(digitalRead(botao) == 0){
Serial.println("ATENÇÃO MOTORISTA, PREFERENCIA DO PEDESTRE");
delay (2000);
digitalWrite (carro_verde, LOW);
digitalWrite (pedestre_vermelho, HIGH);
digitalWrite (carro_vermelho, LOW);
digitalWrite (carro_amarelo, HIGH);
delay (2000);
Serial.println ("ATENÇÃO PEDESTRE, PODE PASSAR");
digitalWrite (carro_amarelo, LOW);
digitalWrite (carro_vermelho, 1);
digitalWrite (pedestre_verde, 1);
digitalWrite (pedestre_vermelho, 0);
delay (5000);
Serial.println ("ATENÇÃO PEDESTRE, O SINAL VAI FECHAR EM 13 SEGUNDOS");
int contagem = 13;
for (contador = 1; contador <=13; contador++){ // podemos utilizar também a função for (contador = 13; contador >= 0; contador --)
digitalWrite (pedestre_verde, 1);
delay (500);
digitalWrite (pedestre_verde, 0);
delay (500);
contagem--;
Serial.println ((String) "ATENÇÃO PEDESTRE, O SINAL VAI FECHAR EM "+contagem+" SEGUNDOS");
}
Serial.println((String)"PEDESTRE, SINAL FECHADO!");
//VOLTA AO ESTADO INICIAL DO SISTEMA
digitalWrite(carro_verde, LOW);
digitalWrite(pedestre_vermelho, HIGH);
digitalWrite(carro_vermelho, 0);
Serial.println("MOTORISTA, PODE PROSSEGUIR");
}
}
}