// Secuencia de tren con parada y marcha automáticas
int Rele = 5; // variable para relé motor D1
int LV = 4; // variable para led de parada para manipulación de pasajeros seguro D2
int LR = 14; // variable para led de marcha D5
int So = 12;// para sonido D6
void setup() //inicializa las configuraciones del programa.
{
pinMode(Rele, OUTPUT); // Inicializa el relé como salida
pinMode(LV, OUTPUT); //inicializa el led de parada como salida
pinMode(LR, OUTPUT); //inicializa el led de marcha como salida
pinMode(So, OUTPUT); // inicializa el sonido como salida
}
void loop() {
digitalWrite(LV, HIGH); // led aviso de tren en parada encendida
delay(10000); // fija durante 10 segundos
digitalWrite(LV, LOW); // led off
delay(500); // secuencia para parpadeo ON/OFF durante 7 segundos avisando marcha
digitalWrite(LV, HIGH);
delay(500);
digitalWrite(LV, LOW);
delay(500);
digitalWrite(LV, HIGH);
delay(500);
digitalWrite(LV, LOW);
delay(500);
digitalWrite(LV, HIGH);
delay(500);
digitalWrite(LV, LOW);
delay(500);
digitalWrite(LV, HIGH);
delay(500);
digitalWrite(LV, LOW);
delay(500);
digitalWrite(LV, HIGH);
delay(500);
digitalWrite(LV, LOW);
delay(500);
digitalWrite(LV, HIGH);
delay(500);
digitalWrite(LV, LOW);
delay(500);
digitalWrite(LV, HIGH);
delay(500);
digitalWrite(LV, LOW);
digitalWrite(LR, HIGH); //encendido led de marcha de tren
delay(1500); // tiempo de seguridad hasta encendido motor de tren tras aviso de marcha
digitalWrite(So, HIGH); // activa sonido tren
digitalWrite(Rele, HIGH); //puesta en marcha de tren
delay(6000); // tiempo hasta parar sonido tren
digitalWrite(So, LOW);
delay(8000); //tiempo adicional de marcha de tren
digitalWrite(So, HIGH);
delay(6000);
digitalWrite(So, LOW);
delay(10000);
digitalWrite(LR, LOW); //secuencia de parpadeo aviso de frenado de tren 6 segundos
delay(500);
digitalWrite(LR, HIGH);
delay(500);
digitalWrite(LR, LOW);
delay(500);
digitalWrite(LR, HIGH);
delay(500);
digitalWrite(LR, LOW);
delay(500);
digitalWrite(LR, HIGH);
delay(500);
digitalWrite(LR, LOW);
delay(500);
digitalWrite(LR, HIGH);
delay(500);
digitalWrite(LR, LOW); //últimos dos segundos a 1/4 de segundo
delay(250);
digitalWrite(LR, HIGH);
delay(250);
digitalWrite(LR, LOW);
delay(250);
digitalWrite(LR, HIGH);
delay(250);
digitalWrite(LR, LOW);
delay(250);
digitalWrite(LR, HIGH);
delay(250);
digitalWrite(LR, LOW);
delay(250);
digitalWrite(LR, HIGH);
delay(250);
digitalWrite(Rele, LOW); //paro de tren
digitalWrite(LR, LOW); // paro luz de marcha
delay(1000); //tiempo de seguridad para encendido de luz de espera al reinicio
}