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);
}
}