Monte a protoboard conforme está o diagrama:
Depois o código fonte dessa bagaça:
----------------------------
//Este semáfaro vai ficar aberto para carros e fechado para pedestres ate o momento do clique no botão
int redCar = 13; //seta a variavel redCar o valor 13 (porta)
int yellowCar = 12; //seta a variavel yellowCar o valor 12(porta)
int greenCar = 11; //seta a variavel greenCar o valor 11(porta)
int redPeople = 9; //seta a variavel redPeople o valor 9(porta)
int greenPeople = 8; //seta a variavel greenPeolpe o valor 8(porta)
int button= 2; //seta a variavel button o valor 2(porta)
int displayA= 7;
int displayB= 6;
int displayC= 5;
int displayD= 4;
int displayE= 3;
int displayF= 10;
int crossTime = 5000; // tempo de travessia
void setup(){
pinMode(redCar,OUTPUT); //seta saida
pinMode(yellowCar,OUTPUT); //seta saida
pinMode(greenCar,OUTPUT); //seta saida
pinMode(redPeople,OUTPUT); //seta saida
pinMode(greenPeople,OUTPUT); //seta saida
pinMode(displayA,OUTPUT); //seta saida
pinMode(displayB,OUTPUT); //seta saida
pinMode(displayC,OUTPUT); //seta saida
pinMode(displayD,OUTPUT); //seta saida
pinMode(displayE,OUTPUT); //seta saida
pinMode(displayF,OUTPUT); //seta saida
pinMode(button,INPUT); //seta entrada (recebe valor)
digitalWrite(greenCar, HIGH); //começa ligando led verde carro
digitalWrite(redPeople, HIGH); //começa ligando led vermelho pessoa
}
void loop(){
int state = digitalRead(button); /*verifica se o botao foi pressionado e se faz mais de 5 seg desde a ultima vez*/
if (state == HIGH) { //compara o state do button se for HIGH(apertado ele vai chamar changeLights(); em 1000(1 segundo)
//se for HIGH == HIGH ele chama o changeLights
delay(100); //
changeLights();
}
}
void changeLights(){
digitalWrite(greenCar, LOW); //apaga carGreen
digitalWrite(yellowCar, HIGH); //acende carYellow
delay(4000);
digitalWrite(yellowCar, LOW); //apaga carYellow
digitalWrite(redCar, HIGH); //acende carRed
digitalWrite(redPeople, LOW); //apaga pedRed
digitalWrite(greenPeople, HIGH); //acende pedGreen
delay(crossTime); //chama a variavel crossTime que voce setou no inicio do codigo
//aqui vai começar a piscar o LED verde avisando que esta acabando o tempo de atravessar
digitalWrite(greenPeople, HIGH);
digitalWrite(displayA, HIGH); //esta sequencia = 5
digitalWrite(displayB, HIGH);
digitalWrite(displayC, LOW);
digitalWrite(displayD, HIGH);
digitalWrite(displayE, LOW);
digitalWrite(displayF, HIGH);
delay(1000);
digitalWrite(greenPeople, HIGH);
digitalWrite(displayA, HIGH); //esta sequencia = 4
digitalWrite(displayB, HIGH);
digitalWrite(displayC, HIGH);
digitalWrite(displayD, HIGH);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
delay(1000);
digitalWrite(greenPeople, HIGH);
digitalWrite(displayA, LOW); //esta sequencia = 3
digitalWrite(displayB, HIGH);
digitalWrite(displayC, HIGH);
digitalWrite(displayD, HIGH);
digitalWrite(displayE, LOW);
digitalWrite(displayF, HIGH);
delay(1000);
digitalWrite(greenPeople, HIGH);
digitalWrite(displayA, LOW); //esta sequencia = 2
digitalWrite(displayB, LOW);
digitalWrite(displayC, HIGH);
digitalWrite(displayD, HIGH);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, HIGH);
delay(1000);
digitalWrite(greenPeople, HIGH);
digitalWrite(displayA, LOW); //esta sequencia = 1
digitalWrite(displayB, HIGH);
digitalWrite(displayC, HIGH);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
delay(1000);
digitalWrite(greenPeople, LOW);
digitalWrite(redPeople, HIGH);
digitalWrite(displayA, LOW); //esta sequencia = desligado
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
delay(250);
//aqui começa o estado inicial
digitalWrite(redPeople, HIGH); //acende led vermelho pessoa
digitalWrite(redCar, LOW); //apaga led vermelho pessoa
digitalWrite(greenCar, HIGH); //acende led verde carro
}
-------------------------------------------
Em breve postarei o vídeo dele funcionando.
Como prometi, tá aí o vídeo:
E e isso pessoal,espero que gostem
Nenhum comentário:
Postar um comentário