Semáfaro com sinal sonoro

MONTAGEM

 Código do arduino

// Declarando as variáveis

int botao=8;    
int carrovermelho=13;  
int carroamarelo=12;
int carroverde=11;
int pedestrevermelho=7;
int pedestreverde=6;
int som=10;
int start=0; //Botão começa com zero para dizer que está desligado

void setup(){
 //Informações dos pino utilizado no arduino
 // Iremos informar se é dado de saída (OUTPUT) ou entrada (INPUT)
  pinMode(botao, INPUT);
  pinMode(carrovermelho, OUTPUT);
  pinMode(carroamarelo, OUTPUT);
  pinMode(carroverde, OUTPUT);
  pinMode(pedestrevermelho, OUTPUT);
  pinMode(pedestreverde, OUTPUT);
  pinMode(som, OUTPUT);
}

void loop(){
 
  digitalWrite(carroverde, HIGH);        // Inicia com led verde do carro acesso
  digitalWrite(pedestrevermelho, HIGH);  // Inicia com led vermelho do pedestre acesso
   
  start = digitalRead(botao);            //Lendo a porta do botão
 
  if (start == HIGH) {                   // Se o botão estiver ligado ...
   
    digitalWrite(carroverde, LOW);       // Desligue verde
     
    digitalWrite(carroamarelo, HIGH);    //Acenda o amarelo
    delay(1000);                         // por 1 segundo
    digitalWrite(carroamarelo, LOW);     //depois apaga
         
    digitalWrite(carrovermelho, HIGH);   //Liga o vermelho
   
    delay(2000);                         //Tempo de 2 segundos para acender o do pedestre
   
    // Iremos fazer um FOR até 10, cada rodada vai demorar 1 segundo, no total de 10 segundos
    for(int y=0; y<10; y++){        
      digitalWrite(pedestrevermelho, LOW);
      digitalWrite(pedestreverde, HIGH);
      tone (som, 440, 10000); // Sinal sonoro
      delay(1000);
    }
   
    // Iremos fazer um FOR até 5, cada rodada vai demorar 1 segundo, no total de 5 segundos
    for(int x=0; x<5; x++){
      digitalWrite(pedestreverde,LOW);
      tone(som, 440, 500);
      digitalWrite(pedestrevermelho, HIGH);
      delay(500);
      digitalWrite(pedestrevermelho,LOW);
      delay(500);
     }
   
    digitalWrite(pedestrevermelho, HIGH);
   
    delay(3000); // Tempo entre o desligamento do sinal do pedestre para o ligamento do sinal dos carros
   
    digitalWrite(carrovermelho, LOW);
    digitalWrite(carroverde, HIGH);
   
    delay(15000); // Tempo que o botão vai ficar inativo até que outro pedestre acione
  }
   
}

Comentários

Postagens mais visitadas