int ledVerde = 18;
int ledAmarillo = 19;
int ledRojo = 21;
int botonInicio = 15;
int botonStop = 4;
int switchDireccion = 2;
int switchIntermitente = 5;
void setup() {
pinMode(ledVerde, OUTPUT);
pinMode(ledAmarillo, OUTPUT);
pinMode(ledRojo, OUTPUT);
pinMode(botonInicio, INPUT_PULLUP);
pinMode(botonStop, INPUT_PULLUP);
pinMode(switchDireccion, INPUT_PULLUP);
pinMode(switchIntermitente, INPUT_PULLUP);
Serial.begin(115200);
}
void loop() {
if (digitalRead(botonInicio) == LOW) {
while (digitalRead(botonStop) == HIGH) {
if (digitalRead(switchIntermitente) == LOW) {
cicloIntermitente();
} else {
if (digitalRead(switchDireccion) == HIGH) {
cicloSemaforoNormal();
} else {
cicloSemaforoReverso();
}
}
}
apagarSemaforo();
}
}
void cicloSemaforoNormal() {
digitalWrite(ledVerde, HIGH);
delay(2000);
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarillo, HIGH);
delay(1000);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledRojo, HIGH);
delay(1500);
digitalWrite(ledRojo, LOW);
}
void cicloSemaforoReverso() {
digitalWrite(ledRojo, HIGH);
delay(1500);
digitalWrite(ledRojo, LOW);
digitalWrite(ledAmarillo, HIGH);
delay(1000);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledVerde, HIGH);
delay(2000);
digitalWrite(ledVerde, LOW);
}
void cicloIntermitente() {
digitalWrite(ledAmarillo, HIGH);
delay(500);
digitalWrite(ledAmarillo, LOW);
delay(500);
}
void apagarSemaforo() {
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledRojo, LOW);
}