unsigned long tiempo_transcurrido;
unsigned long tiemporeal;
unsigned long tiempoalmacenado;
struct Semaforo{
int pinLedRojo;
int pinLedAmarillo;
int pinLedVerde;
};
//llamo a la funcion:
struct Semaforo semaforo1 = {13,12,11};
struct Semaforo semaforo2 = {9,8,7};
void setup() {
// put your setup code here, to run once:
pinMode(semaforo1.pinLedRojo, OUTPUT);
pinMode(semaforo1.pinLedAmarillo, OUTPUT);
pinMode(semaforo1.pinLedVerde, OUTPUT);
//secuenciaII
pinMode(semaforo2.pinLedRojo, OUTPUT);
pinMode(semaforo2.pinLedAmarillo, OUTPUT);
pinMode(semaforo2.pinLedVerde, OUTPUT);
}
void Secuencia2semaforos(struct Semaforo, struct Semaforo){
tiemporeal=millis();
tiempoalmacenado=tiemporeal-tiempo_transcurrido;
tiempo_transcurrido=tiemporeal-tiempoalmacenado;
if (tiempoalmacenado<=500){
digitalWrite(semaforo1.pinLedRojo, HIGH);
digitalWrite(semaforo2.pinLedVerde, HIGH);
tiempoalmacenado=tiemporeal;
}
if (tiempoalmacenado>500 && tiempoalmacenado<=750){
digitalWrite(semaforo1.pinLedAmarillo, HIGH);
digitalWrite(semaforo2.pinLedAmarillo, HIGH);
digitalWrite(semaforo1.pinLedRojo, LOW);
digitalWrite(semaforo2.pinLedVerde, LOW);
tiempoalmacenado=tiemporeal;
}
if (tiempoalmacenado>750 && tiempoalmacenado<=1250){
digitalWrite(semaforo1.pinLedAmarillo, LOW);
digitalWrite(semaforo2.pinLedAmarillo, LOW);
digitalWrite(semaforo1.pinLedRojo, LOW);
digitalWrite(semaforo1.pinLedVerde, HIGH);
digitalWrite(semaforo2.pinLedRojo, HIGH);
tiempoalmacenado=tiemporeal;
}
if (tiempoalmacenado>1250){
digitalWrite(semaforo1.pinLedAmarillo, LOW);
digitalWrite(semaforo2.pinLedAmarillo, LOW);
digitalWrite(semaforo1.pinLedRojo, LOW);
digitalWrite(semaforo1.pinLedVerde, LOW);
digitalWrite(semaforo2.pinLedRojo, LOW);
}
delay(10);
}
void loop() {
//uso de estructura en funcion
Secuencia2semaforos(semaforo1,semaforo2);
delay(10);
}