Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Semaforo 1
- #define ledV_1 2
- #define ledA_1 3
- #define ledR_1 4
- #define sensor_1 8
- // Semaforo 2
- #define ledV_2 5
- #define ledA_2 6
- #define ledR_2 7
- #define sensor_2 9
- // Pedestre
- #define pV_1 10
- #define pR_1 11
- #define pV_2 12
- #define pR_2 13
- // Variables
- bool estaSemaforo1_Encendido = true; // Indica si el semáforo 1 está activo
- int timeLeds = 1500; // Tiempo de espera entre transición de LEDs
- int timeSemaforo = 5000; // Tiempo de espera hasta comenzar transición
- void setup() {
- // Iniciamos el monitor serie
- Serial.begin(9600);
- // Modo entrada/salida de los pines
- pinMode(ledV_1, OUTPUT);
- pinMode(ledA_1, OUTPUT);
- pinMode(ledR_1, OUTPUT);
- pinMode(ledV_2, OUTPUT);
- pinMode(ledA_2, OUTPUT);
- pinMode(ledR_2, OUTPUT);
- pinMode(sensor_1, INPUT);
- pinMode(sensor_2, INPUT);
- pinMode(pV_1, OUTPUT);
- pinMode(pR_1, OUTPUT);
- pinMode(pV_2, OUTPUT);
- pinMode(pR_2, OUTPUT);
- // Apagamos todos los LEDs
- digitalWrite(ledV_1, HIGH);
- digitalWrite(ledA_1, HIGH);
- digitalWrite(ledR_1, HIGH);
- digitalWrite(ledV_2, HIGH);
- digitalWrite(ledA_2, HIGH);
- digitalWrite(ledR_2, HIGH);
- digitalWrite(pV_1, HIGH);
- digitalWrite(pR_1, HIGH);
- digitalWrite(pV_2, HIGH);
- digitalWrite(pR_2, HIGH);
- // Estado inicial: semáforo 1 abierto, semáforo 2 cerrado
- digitalWrite(ledV_1, LOW);
- digitalWrite(ledR_2, LOW);
- digitalWrite(pR_1, LOW);
- digitalWrite(pV_2, LOW);
- }
- void loop() {
- if (estaSemaforo1_Encendido) // Si está encendido el Semáforo 1...
- {
- int estado = digitalRead(sensor_2); // Comprobamos el pulsador 2
- if (estado == HIGH) // Si se pulso el pulsador...
- {
- cambioSemaforo(ledV_1, ledA_1, ledR_1, ledR_2, ledV_2, pV_1, pR_1, pR_2, pV_2); // Encender semáforo 2
- estaSemaforo1_Encendido = false; // Semáforo 1 apagado
- }
- }
- else // Caso contrario, es decir, si está apagado el Semáforo 1...
- {
- int estado = digitalRead(sensor_1); // Comprobamos el pulsador 1
- if (estado == HIGH) // Si se pulso el pulsador...
- {
- cambioSemaforo(ledV_2, ledA_2, ledR_2, ledR_1, ledV_1, pV_2, pR_2, pR_2, pV_2); // Encender semáforo 1
- estaSemaforo1_Encendido = true; // Semáforo 1 encendido
- }
- }
- }
- void cambioSemaforo(int ledV, int ledA, int ledR, int ledR_, int ledV_, int pV, int pR, int pR_, int pV_)
- {
- delay(timeSemaforo); // Esperamos para empezar el cambio del semaforo
- // Pasamos a Luz Amarilla
- digitalWrite(ledV, HIGH);
- digitalWrite(ledA, LOW);
- digitalWrite(pV_, HIGH);
- digitalWrite(pR_, LOW);
- delay(timeLeds);
- // Pasamos a Luz Roja
- digitalWrite(ledA, HIGH);
- digitalWrite(ledR, LOW);
- delay(timeLeds);
- // Encendemos el otro semáforo
- digitalWrite(ledR_, HIGH);
- digitalWrite(ledV_, LOW);
- digitalWrite(pR, HIGH);
- digitalWrite(pV, LOW);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement