// Variáveis do semáforo para veículos
int cverde = 8; // verde
int camare = 9; // amarelo
int cverme = 10; // vermelho
// Variáveis do semáforo para padestres
int pverde = 6; // verde pedestre
int pverme = 7; // verde pedestre
// Variáveis de tempo dos semáforoa
int tlongo = 4000; // tempo longo para verde e vermelho
int tcurto = 600; // tempo curto para amarelo
int espera = 5; // número de piscadas para aviso ao pedestre
int x; // variável para contador
// Aviso sonoro
int apito = 5; // pino do buzzer
void setup() {
// pinos de saída do semáforo de veículos
pinMode(cverde, OUTPUT);
pinMode(camare, OUTPUT);
pinMode(cverme, OUTPUT);
// pinos de saída do semáforo de pedestres
pinMode(pverde, OUTPUT);
pinMode(pverme, OUTPUT);
// pinos de saída do apito
pinMode(apito, OUTPUT);
}
void loop() {
// desliga vermelho pedestre e liga vermelho veículos e verde pedestre
digitalWrite(pverme, LOW);
digitalWrite(pverde, HIGH);
digitalWrite(cverme, HIGH);
delay(tlongo);
// piscagem do verde pedesrte com apito
while (x < espera) { //compara se "x" é menor que "espera"
digitalWrite(pverde, HIGH);
digitalWrite(apito, HIGH);
delay(tcurto);
digitalWrite(pverde, LOW);
digitalWrite(apito, LOW);
delay(tcurto);
x = x + 1; // contador de piscadas
}
x = 0; // zera o contador de piscadas
// desliga vermelho veículos e liga verde veículos e vermelho pedestres
digitalWrite(cverme, LOW);
digitalWrite(pverme, HIGH);
digitalWrite(cverde, HIGH);
delay(tlongo);
// desliga verde veículos
digitalWrite(cverde, LOW);
// piscagem do amarelo com apito
while (x < espera) { //compara se "x" é menor que "espera"
digitalWrite(camare, HIGH);
digitalWrite(apito, HIGH);
delay(tcurto);
digitalWrite(camare, LOW);
digitalWrite(apito, LOW);
delay(tcurto);
x = x + 1;
}
x = 0; // zera o contador de piscadas
}