AYUDA TAREA DE FÍSICA ELECTRÓNICA:
Condiciones para cruce con dos semáforos.
Cuando pasen 3 segundos el led rojo debe cambiar al led amarillo, este debe durar encendido 1 segundo. Después de esto el led verde debe prender y durar 5 segundos.
Mientras esté en verde el semáforo 1 de un cruce, el semáforo 2 debe estar en rojo. Trascurrido el tiempo determinado para que cambie a verde el semáforo 2 debe estar en verde y el semáforo 1 en rojo.
Se debe visualizar en un display el conteo del tiempo que está encendido cada led.
Simular el circuito
Simulación:
Debe ser realizada en Tinkercard o circuit maker el instalador se encuentra en el entorno de aprendizaje
práctico.
Respuestas a la pregunta
El código para simular el circuito de dos semáforos bajo las condiciones descritas es:
#define LUZ_VERDE_A 12
#define LUZ_AMARILLA_A 11
#define LUZ_ROJA_A 10
#define LUZ_VERDE_B 9
#define LUZ_AMARILLA_B 8
#define LUZ_ROJA_B 7
#define INTERRUPTOR 2
void setup()
{
Serial.begin(9600);
pinMode(LUZ_VERDE_A, OUTPUT);
pinMode(LUZ_AMARILLA_A, OUTPUT);
pinMode(LUZ_ROJA_A, OUTPUT);
pinMode(LUZ_VERDE_B, OUTPUT);
pinMode(LUZ_AMARILLA_B, OUTPUT);
pinMode(LUZ_ROJA_B, OUTPUT);
pinMode(INTERRUPTOR, INPUT);
}
void loop()
{
int semaforoA = digitalRead(INTERRUPTOR)==LOW;
if (semaforoA) {
delay(5000);
digitalWrite(LUZ_VERDE_A, LOW);
digitalWrite(LUZ_AMARILLA_A, HIGH);
delay(1000);
digitalWrite(LUZ_AMARILLA_A, LOW);
digitalWrite(LUZ_ROJA_A, HIGH);
delay(3000);
digitalWrite(LUZ_ROJA_B, LOW);
digitalWrite(LUZ_VERDE_B, HIGH);
delay(5000);
digitalWrite(LUZ_VERDE_B, LOW);
for (int i=0; i < 10; i++){
digitalWrite(LUZ_AMARILLA_B, HIGH);
delay(1000);
digitalWrite(LUZ_AMARILLA_B, LOW);
delay(3000);
}
digitalWrite(LUZ_ROJA_B, HIGH);
delay(3000);
digitalWrite(LUZ_ROJA_A, LOW);
}else {
digitalWrite(LUZ_VERDE_A, HIGH);
digitalWrite(LUZ_ROJA_B, HIGH);
}
}