Coloquei dois potenciômetros. Um controla o tempo da luz vermelha para os carros e o outro o tempo do verde.
Reparem que o verde dos pedestres só é acionado 1 segundo após o vermelho dos carros, e o vermelho do pedestre emite um alerta para informar a sua mudança de estado.
É isso! Até!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | /*-------------------------- SEMAFORO CARRO / PEDESTRE FELLIPE COUTO - 26/05/2011 -------------------------*/ #define VermelhoC 12 //VERMELHO CARRO #define AmareloC 11 //AMARELO CARRO #define VerdeC 10 //VERDE CARRO #define VermelhoP 3 //VERMELHO PEDESTRE #define VerdeP 2 //VERDE PEDESTRE #define PotVermelho 0 //POTENCIOMETRO VERMELHO - Analog 0 #define PotVerde 1 //POTENCIOMETRO VERDE - Analog 1 int TempoVermelho = 0; int TempoVerde = 12000; void setup(){ pinMode(VermelhoC, OUTPUT); pinMode(AmareloC, OUTPUT); pinMode(VerdeC, OUTPUT); pinMode(VermelhoP, OUTPUT); pinMode(VerdeP, OUTPUT); } void loop(){ TempoVermelho = map(analogRead(PotVermelho), 0, 1023, 8000, 30000); //08 seg a 30 seg TempoVerde = map(analogRead(PotVerde), 0, 1023, 8000, 30000); VermelhoCarro(); delay(TempoVermelho - 4000); AlertaP(); VerdeCarro(); delay(TempoVerde - 4000); AmareloCarro(); delay(4000); } void VermelhoCarro(){ digitalWrite(VermelhoC,HIGH); digitalWrite(AmareloC,LOW); digitalWrite(VerdeC,LOW); delay(1000); digitalWrite(VerdeP,HIGH); digitalWrite(VermelhoP,LOW); } void VerdeCarro(){ digitalWrite(VermelhoC,LOW); digitalWrite(AmareloC,LOW); digitalWrite(VerdeC,HIGH); digitalWrite(VerdeP,LOW); digitalWrite(VermelhoP,HIGH); } void AmareloCarro(){ digitalWrite(VermelhoC,LOW); digitalWrite(AmareloC,HIGH); digitalWrite(VerdeC,LOW); digitalWrite(VerdeP,LOW); digitalWrite(VermelhoP,HIGH); } void AlertaP(){ digitalWrite(VerdeP,LOW); for (int i = 0; i < 6; i++){ digitalWrite(VermelhoP,HIGH); delay(400); digitalWrite(VermelhoP,LOW); delay(400); } digitalWrite(VermelhoP,HIGH); delay(1000); } |
Nenhum comentário:
Postar um comentário