Semáforos para vehículos y peatones, utilizando temporización y sensores PIR, así como una señal sonora

COMPONENTES Y SUMINISTROS

  • 1 Arduino UNO
  • 4 LED de 5 mm: rojo
  • 4 LED de 5 mm: verde
  • 4 LED de 5 mm: amarillo
  • 2 Zumbador
  • 2 Sensor PIR, 7m
  • 5 Resistencia 330 ohmios
  • 1 Protobord

ACERCA DE ESTE PROYECTO

El proyecto simula el funcionamiento de un par de semáforos para vehículos y peatones en una zona poco transitada por peatones, por lo que los semáforos suelen estar abiertos al paso de vehículos, detectando la presencia de peatones por medio de sensores PIR, que activan el cambio en la señalización luminosa, estado establecido un tiempo mínimo para otra activación posterior. Asimismo, cuando se permite el paso a los peatones, se activa una señal sonora a intervalos que indican que el tiempo se va acabando.

CÓDIGO

// Empiezo a proporcionar los pines que voy a utilizar de la placa

int  rojo  =  9 ;    		// Activación de los LED rojos, digitales
int  amarillo  =  8 ;    	// Activación de los LED amarillos, digitales
int  verde  =  7 ; 			// Activación de los LED verdes, digitales
int  p_rojo  =  10 ;     // Activación de los LEDs rojos para peatones, digital
int  p_verde  =  11 ;    // Activación de los LED verdes para peatones, digital
int  PIR1  =  6 ; 			// Sello del PIR1, digital
int  PIR2  =  5 ; 			// Sello del PIR2, digital
int  Zumbador  =  3 ; 			// Activación de los zumbadores, digitales



// la rutina de configuración se ejecuta una vez cuando presiona restablecer:
 configuración vacía ()  {
  // Se inicializan los pines como salida o entrada
  pinMode ( rojo ,  SALIDA );
  pinMode ( amarillo ,  SALIDA );
  pinMode ( verde ,  SALIDA );
  pinMode ( p_rojo ,  SALIDA );
  pinMode ( p_verde ,  SALIDA );
  pinMode ( PIR1 ,  ENTRADA );
  pinMode ( PIR2 ,  ENTRADA ); 
  pinMode ( Zumbador ,  SALIDA );
}

// la rutina de bucle se ejecuta una y otra vez para siempre:
 bucle vacío ()  {

  int  i ,  j ; 		// Variables que usar en los ciclos
  
  if  (( digitalRead ( PIR1 ))  ||  ( digitalRead ( PIR2 )))  { 		// Si se detecta la presencia de una turba en alguno de los lados
			// Se avisa de la presencia de peatones con un cambio de color del semforo
    digitalWrite ( verde ,  BAJO );  			// Se cambian los semforos de verde
    digitalWrite ( amarillo ,  ALTO );  		// un amarillo,
    retraso ( 20000 );       					// que se mantendr durante 20 segundos.
			// Se permite el paso de los peatones
    digitalWrite ( amarillo ,  BAJO );  		// Se cambian los semforos de amarillo
    digitalWrite ( rojo ,  ALTO );  			// un verde.
    digitalWrite ( p_rojo ,  BAJO );
    escritura digital ( p_verde , ALTO ); 
    		// Se inicia un sello sonoro con un ritmo que indique el tiempo restante.
    para  ( yo = 1 ; yo < 11 ; yo ++ )  {
      para  ( j = 1 ; j < 5 ; j ++ )  {
       digitalWrite ( Zumbador ,  ALTO );
       retraso ( 2000 / i );
       digitalWrite ( Zumbador ,  BAJO );
       retraso ( 2000 / i );
      }  
    }
           // Se vuelve a permitir la circulacion de vehiculos
  digitalWrite ( rojo ,  BAJO );      // Se apaga la luz roja
  digitalWrite ( verde ,  ALTO );      // y se enciende la luz verde
  digitalWrite ( p_rojo ,  ALTO );
  escritura digital ( p_verde , BAJO ); 
  retraso ( 180000 );                // Se espera al menos 3 minutos para volver a habilitar el paso de peatones
  }
  			// Se permite la circulacion de vehiculos
  digitalWrite ( rojo ,  BAJO );   	 // Se apaga la luz roja
  digitalWrite ( verde ,  ALTO );      // y se enciende la luz verde para vehiculos
  digitalWrite ( p_rojo ,  ALTO );    // Al revs para peatones
  escritura digital ( p_verde , BAJO ); 
}

create.arduino.cc