segunda-feira, 14 de março de 2016

Fazendo um semáforo com arduino

Fala povo que acompanha o meu blog. Na postagem de hoje irei mostrar como se faz um semaforo caseiro utilizando para tal o famigerado arduino. Para isso voce ira precisar de um arduino, um display 7 segmentos do tipo catodo, 3 leds, um porrilhao de resistor 220 ohms, varios fios como jumpers e um botãozim de conectar.


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: