semaforo con ultrasonidos

yo estoy haciendo un semaforo inteligente con ultrasonido..... me imagino que ya saben que quiero hacer........

cuando el ultrasonido detecte carro en una via cambie a verde y igual que la otra via.... !! estoy trabajando con via principal y via secundaria.... !! pero cuando estan ocupadas las dos vias deberia estar funcionando normal....

vean mi codigo a ver que error tengo.

int Ultras_calle_principal_echo = 2; //esta linea es para los dos sensores ultrasonido. La calle principal. Conectar en el ping de entrada llamada ECHO
int Ultras_calle_principal_trig = 3; //esta linea es para los dos sensores ultrasonido. La calle principal. Conectar en el ping de salida llamada STRING

int Ultras_calle_secundaria_echo = 4; //esta linea es para los dos sensores ultrasonido. La calle secundaria. Conectar en el ping de entrada llamado ECHO
int Ultras_calle_secundaria_trig = 5; //esta linea es para los dos sensores ultrasonido. La calle secundaria. Conectar en el ping de entrada llamado STRING

int calle_principal_ledverde = 6;
int calle_principal_ledamarillo = 7;
int calle_principal_ledrojo = 8;

int calle_secundaria_ledverde = 9;
int calle_secundaria_ledamarillo = 10;
int calle_secundaria_ledrojo = 11;
int Distancia1; //declaramos variable int, enteras Distancia1.
int Distancia2; //declaramos variable int, enteras Distancia2.

void setup() {

Serial.begin(9600); //este puerto lo llamamos para el monitor serie. Y saber si esta funcionando lo que estamos haciendo, en pocas palabrar muestra si hay señal

pinMode (Ultras_calle_principal_echo, INPUT);
pinMode (Ultras_calle_principal_trig, OUTPUT);

pinMode (Ultras_calle_secundaria_echo, INPUT);
pinMode (Ultras_calle_secundaria_trig, OUTPUT);

pinMode(calle_principal_ledverde, OUTPUT);
pinMode(calle_principal_ledamarillo, OUTPUT);
pinMode(calle_principal_ledrojo, OUTPUT);

pinMode(calle_secundaria_ledverde, OUTPUT);
pinMode(calle_secundaria_ledamarillo, OUTPUT);
pinMode(calle_secundaria_ledrojo, OUTPUT);

}

void ultrasonidos_calle_principal(int &Distancia1) {

digitalWrite (Ultras_calle_principal_trig, LOW);
delay(10);
digitalWrite (Ultras_calle_principal_trig, HIGH);
delay(10);
digitalWrite (Ultras_calle_principal_trig, LOW);

Distancia1 = pulseIn (Ultras_calle_principal_echo, HIGH);
Distancia1 = Distancia1 / 0.0100;
delay(100);
}

void ultrasonidos_calle_secundaria(int &Distancia2) {

digitalWrite (Ultras_calle_secundaria_trig, LOW);
delay(10);
digitalWrite (Ultras_calle_secundaria_trig, HIGH);
delay(10);
digitalWrite (Ultras_calle_secundaria_trig, LOW);

Distancia2 = pulseIn (Ultras_calle_secundaria_echo, HIGH);
Distancia2 = Distancia2 / 0.0100;
delay(100);
}

void loop() {
Serial.print(Distancia1);
Serial.print("Calle Principal");
Serial.println();
delay(10);

Serial.print(Distancia2);
Serial.print("Calle Secundaria");
Serial.println();
delay(10);

ultrasonidos_calle_principal (Distancia1);
delay (150);

ultrasonidos_calle_secundaria (Distancia2);
delay (150);

/////////////////////////////////////////////////
//CUANDO ESTAN OCUPADAS LAS VIAS//
/////////////////////////////////////////////////

if
( Distancia1 <= 10 && Distancia2 <= 10)
{

digitalWrite (calle_secundaria_ledverde, LOW);
digitalWrite (calle_secundaria_ledamarillo, LOW);
digitalWrite (calle_principal_ledrojo, LOW);
digitalWrite (calle_principal_ledamarillo, LOW);

digitalWrite (calle_principal_ledverde, HIGH);
digitalWrite (calle_secundaria_ledrojo, HIGH);
delay(1000);

digitalWrite (calle_principal_ledverde, LOW);
digitalWrite (calle_principal_ledamarillo, HIGH);
delay(500);

digitalWrite (calle_principal_ledamarillo, LOW);
digitalWrite (calle_principal_ledrojo, HIGH);
digitalWrite (calle_secundaria_ledrojo, LOW);
digitalWrite (calle_secundaria_ledverde, HIGH);
delay(1000);

digitalWrite (calle_secundaria_ledverde, LOW);
digitalWrite (calle_secundaria_ledamarillo, HIGH);
delay(500);

}

//////////////////////////////////////////////////////////////
//CUANDO ESTA DESOCUPADA LA VIA SECUNDARIA//
/////////////////////////////////////////////////////////////
if
(Distancia1 <= 75 && Distancia2 > 50)
{
digitalWrite (calle_secundaria_ledverde, LOW);
digitalWrite (calle_secundaria_ledamarillo, LOW);
digitalWrite (calle_principal_ledrojo, LOW);
digitalWrite (calle_principal_ledamarillo, LOW);

digitalWrite (calle_principal_ledverde, HIGH);
digitalWrite (calle_secundaria_ledrojo, HIGH);
}

//////////////////////////////////////////////////////////////
//CUANDO ESTA DESOCUPADA LA VIA PRINCIPAL//
/////////////////////////////////////////////////////////////
if
(Distancia2 <= 75 && Distancia1 > 50)
{
digitalWrite (calle_principal_ledverde, LOW);
digitalWrite (calle_principal_ledamarillo, LOW);
digitalWrite (calle_secundaria_ledrojo, LOW);
digitalWrite (calle_secundaria_ledamarillo, LOW);

digitalWrite (calle_secundaria_ledverde, HIGH);
digitalWrite (calle_principal_ledrojo, HIGH);
}

}

Otro urgente a leer las normas del foro y editar su post.
Lee las Normas del foro.
Luego ve a More (abajo a la derecha), click, luego Modify y estas en modo EDICION.
Selecciona todo el código y click en </> arriba del emoticon
Gracias.

Supongo que lo tuyo es a nivel de trabajo teórico/practico pero no para implementarlo en la realidad no?