Go Down

Topic: SEMAFORO / TRAFFIC LIGHT (Read 289 times) previous topic - next topic

FrankrZndo

Code: [Select]


/*Copyright (C) 2019 Francisco Sandoval Herrera*/
/*Arduino Software libre LATAM*/

//PROGRAMA PARA SEMAFOROS Y PEATONES
//PARA USAR LOS PEATONES SE REQUIERE ARDUINO UNO O SUPERIOR, YA QUE SE NECESITAN 12 SALIDAS DIGITALES.
//SE PUEDE USAR ARDUINO NANO O MICRO, PERO TOCA PONER FORMA DE COMENTARIOS PARA QUE FUNCIONE CORRECTAMENTE.
//LA FUNCION DE LOS PULSADORES ES SIMULAR LOS VEHICULOS PARA ADAPTAR EL TRAFICO ENTRE LOS PEATONES Y CARROS.
//LOS PULSADORES PUEDEN SER REMPLAZADOS POR UN TIMER PARA QUE DEPENDA SOLO DEL TIEMPO Y NO DE LA CANTIDAD DE TRAFICO Y ASI SEA MAS AUTONOMO.

//FRANCISCO SANDOVAL HERRERA
//UNIVERSIDAD PONTIFICIA BOLIVARIANA

//PUERTOS
//SEMAFORO1
#define LEDV1 2
#define LEDA1 3
#define LEDR1 4

//SEMAFORO2
#define LEDV2 5
#define LEDA2 6
#define LEDR2 7

//CARROS
#define PUL1 8
#define PUL2 9

//SEMAFORO_PEATONES_1
#define LEDV3 10
#define LEDR3 11

//SEMAFORO_PEATONES_2
#define LEDV4 12
#define LEDR4 13

//DEFINES
bool active1 = true; //SI SEM1 ON, SEM2 OFF
int tiempoChange = 1250; //CAMBIO ENTRE LUCES
int tiempoWait = 2000; //CAMBIO ENTRE SEMAFOROS

//CONFIGURACION DEL MONITOR
void setup(){
  Serial.begin(9600);
 
  //MODO LED IN/OUT
  //SEM1
  pinMode(LEDV1, OUTPUT);
  pinMode(LEDA1, OUTPUT);
  pinMode(LEDR1, OUTPUT);
  //SEM2
  pinMode(LEDV2, OUTPUT);
  pinMode(LEDA2, OUTPUT);
  pinMode(LEDR2, OUTPUT);
  //CARROS
  pinMode(PUL1, INPUT);
  pinMode(PUL2, INPUT);
  //SEM_PEA_1
  pinMode(LEDV3, OUTPUT);
  pinMode(LEDR3, OUTPUT);
  //SEM_PEA_2
  pinMode(LEDV4, OUTPUT);
  pinMode(LEDR4, OUTPUT);

  //LEDS OFF
  //VERDES
  digitalWrite(LEDV1, LOW);
  digitalWrite(LEDV2, LOW);
  digitalWrite(LEDV3, LOW);
  digitalWrite(LEDV4, LOW);
  //AMARILLOS
  digitalWrite(LEDA1, LOW);
  digitalWrite(LEDA2, LOW);
  //ROJOS
  digitalWrite(LEDR1, LOW);
  digitalWrite(LEDR2, LOW);
  digitalWrite(LEDR3, LOW);
  digitalWrite(LEDR4, LOW);

  //ESTADO INICIAL, S1=V S2=R SP1=R SP2=V
  //SEM1
  digitalWrite(LEDV1, HIGH);
  //SEM2
  digitalWrite(LEDR2, HIGH);
  //SEMPE1
  digitalWrite(LEDR3, HIGH);
  //SEMPE2
  digitalWrite(LEDV4, HIGH);
}

void loop(){//DEEPENDE DEL SEMAFORO
  if (active1)
  {
    //SEM1 ON, PUL2 STATE
    int valor2 = digitalRead(PUL2);

    //CARRO ARRIVES
    if (valor2 == HIGH)
    {
      //SEM2 ON
      encenderSemaforo2();
      //SEMP2 ON
//      encenderSemaforoP2();

      //SEM2 IS ON
      active1 = false;
    }
  }
  else
  {
    //SEM2 ON, PUL1 STATE
    int valor1 = digitalRead(PUL1);

    //CARRO ARRIVES
      if (valor1 == HIGH)
      {
        //SEM1 ON
        encenderSemaforo1();
        //SEMP1 ON
//        encenderSemaforoP1();
       
        //SEM1 IS ON
        active1 = true;
      }
  }
}

void encenderSemaforo2()
{
  //APAGAR SEM1
  //ESPERA
  delay(tiempoWait);

  //PASO A AMARILLA
  digitalWrite(LEDV1, LOW);
  digitalWrite(LEDA1, HIGH);

  //ESPERA
  delay(tiempoChange);

  //PASO A ROJA
  digitalWrite(LEDA1, LOW);
  digitalWrite(LEDR1, HIGH);

  //ENCENDER SEMPE1
  //ESPERA
  delay(tiempoChange);

  //PASO A VERDE
  digitalWrite(LEDR3, LOW);
  digitalWrite(LEDV3, HIGH);

  //APAGAR SEMPE2
  //ESPERA
  delay(tiempoWait);

  //PASO A ROJO
  digitalWrite(LEDV4, LOW);
  digitalWrite(LEDR4, HIGH);

  //ENCENDER SEM2
  //ESPERA
  delay(tiempoChange);

  //PASO A AMARILLO
  digitalWrite(LEDR2, LOW);
  digitalWrite(LEDV2, HIGH); 
}





void encenderSemaforo1()
{
  //APAGAR SEM2
  //ESPERA
  delay(tiempoWait);

  //PASO A AMARILLA
  digitalWrite(LEDV2, LOW);
  digitalWrite(LEDA2, HIGH);

  //ESPERA
  delay(tiempoChange);

  //PASO A ROJA
  digitalWrite(LEDA2, LOW);
  digitalWrite(LEDR2, HIGH);

  //ENCENDER SEMPE2
  //ESPERA
  delay(tiempoChange);

  //PASO A VERDE
  digitalWrite(LEDR4, LOW);
  digitalWrite(LEDV4, HIGH);

  //APAGAR SEMPE1
  //ESPERA
  delay(tiempoWait);

  //PASO A ROJO
  digitalWrite(LEDV3, LOW);
  digitalWrite(LEDR3, HIGH);

  //ENCENDER SEM1
  //ESPERA
  delay(tiempoChange);

  //PASO A AMARILLO
  digitalWrite(LEDR1, LOW);
  digitalWrite(LEDV1, HIGH); 
}


Paul__B

The practice of typing in upper case dates back to when these were used for programming.

It has long since been considered that upper case makes information less readable and simply tiring, and that communication in this manner indicates either a lack of skill or deliberate annoyance.  It certainly makes people less interested in discussing your code.  You will clearly note that newspapers do not publish in this fashion, except in banners.  Your subject does not deserve this.

We do not seem to be able to determine just why you have posted this piece of code here.  What is your intent?

Go Up