int pinVermelho = 10;
int pinAmarelo = 9;
int pinVerde = 8;
int pinBotao = 7;
int pinPVermelho = 3;
int pinPVerde = 2;
int estadoAnteriorBotao;
int tempoPisca;
int estadoPisca;
int faseSemaforo;
int estadoBotao;
void setup() {
// put your setup code here, to run once:
pinMode (pinVermelho, OUTPUT);
pinMode (pinAmarelo, OUTPUT);
pinMode (pinVerde, OUTPUT);
pinMode (pinBotao, INPUT);
pinMode (pinPVermelho, OUTPUT);
pinMode (pinPVerde, OUTPUT);
faseSemaforo = 1;
estadoAnteriorBotao = digitalRead (pinBotao);
tempoPisca = 0;
tempoPisca = HIGH;
}
void loop() {
// put your main code here, to run repeatedly:
estadoBotao = digitalRead (pinBotao);
if ((estadoBotao == HIGH) && (estadoAnteriorBotao == LOW)) {
if (faseSemaforo < 4) {
faseSemaforo = faseSemaforo + 1;
} else {
faseSemaforo = 1;}
}
estadoAnteriorBotao = estadoBotao;
if (faseSemaforo == 1) {
digitalWrite (pinVerde, HIGH);
digitalWrite (pinAmarelo, LOW);
digitalWrite (pinVermelho, LOW);
digitalWrite (pinPVerde, LOW);
digitalWrite (pinPVermelho, HIGH);
}
if (faseSemaforo == 2) {
digitalWrite (pinVerde, LOW);
digitalWrite (pinAmarelo, HIGH);
digitalWrite (pinVermelho, LOW);
}
if (faseSemaforo == 3) {
digitalWrite (pinVerde, LOW);
digitalWrite (pinAmarelo, LOW);
digitalWrite (pinVermelho, HIGH);
digitalWrite (pinPVerde, HIGH);
digitalWrite (pinPVermelho, LOW);
}
if (faseSemaforo == 4) { // PARA O SEMAFORO DE PEDESTRE PISCAR
digitalWrite (pinVerde, LOW);
digitalWrite (pinAmarelo, LOW);
digitalWrite (pinVermelho, HIGH);
tempoPisca = tempoPisca + 1;
if (tempoPisca == 400) {
estadoPisca = !estadoPisca;
tempoPisca = 0;
}
digitalWrite (pinPVerde, LOW);
digitalWrite (pinPVermelho, estadoPisca);
}
delay (1);
}