Documentos de Académico
Documentos de Profesional
Documentos de Cultura
//Semaforo 1
//Semaforo 2
//Pulsador
//Buzzer
//Sensores Ultrasonicos
//Declaracion de Variables
long tiempo=0;
long tiempo_anterior=0;
int distancia=100;
void setup() {
pinMode(sem1_rojo,OUTPUT);
pinMode(sem1_rojo,OUTPUT);
pinMode(sem1_rojo,OUTPUT);
pinMode(sem2_rojo,OUTPUT);
pinMode(sem2_rojo,OUTPUT);
pinMode(sem2_rojo,OUTPUT);
pinMode(buzzer,OUTPUT);
pinMode(pulsador,INPUT);
pinMode(ultra1_trig,OUTPUT);
pinMode(ultra1_echo,INPUT);
pinMode(ultra2_trig,OUTPUT);
pinMode(ultra1_echo,INPUT);
//Condiciones Iniciales
digitalWrite(ultra1_trig,LOW);
digitalWrite(ultra2_trig,LOW);
digitalWrite(sem1_rojo,LOW);
digitalWrite(sem1_naranja,LOW);
digitalWrite(sem1_verde,HIGH);
digitalWrite(sem2_rojo,HIGH);
digitalWrite(sem2_naranja,LOW);
digitalWrite(sem2_verde,LOW);
void loop() {
if(semaforo_activo==1)
distancia=leer_distancia(ultra1_trig,ultra1_echo);
if (distancia<5)
semaforo_activo=2;
transicion1a2();
}
if(semaforo_activo==2)
distancia=leer_distancia(ultra2_trig,ultra2_echo);
if (distancia<5)
semaforo_activo=1;
transicion2a1();
if(digitalRead(pulsador)) //presionado es 5v
digitalWrite(sem1_rojo,LOW);
digitalWrite(sem1_naranja,LOW);
digitalWrite(sem1_verde,LOW);
digitalWrite(sem2_rojo,LOW);
digitalWrite(sem2_naranja,LOW);
digitalWrite(sem2_verde,LOW);
tiempo=millis();
if(tiempo>tiempo_anterior+6000)
tiempo_anterior=tiempo;
switch(semaforo_activo)
case 1:transicion1a2();
break;
case 2:transicion2a1();
break;
int distancia_cm=100;
int tiempo_medido;
digitalWrite(trig,HIGH);
delay(20);
digitalWrite(trig,LOW);
tiempo_medido=pulseIn(echo,HIGH);
distancia_cm=tiempo_medido/59;
delay(100);
return distancia_cm;
void transicion1a2()
digitalWrite(sem1_rojo,LOW);
digitalWrite(sem1_naranja,HIGH);
digitalWrite(sem1_verde,LOW);
digitalWrite(sem2_rojo,LOW);
digitalWrite(sem2_naranja,HIGH);
digitalWrite(sem2_verde,LOW);
delay(2000);
digitalWrite(sem1_rojo,HIGH);
digitalWrite(sem1_naranja,LOW);
digitalWrite(sem1_verde,LOW);
digitalWrite(sem2_rojo,LOW);
digitalWrite(sem2_naranja,LOW);
digitalWrite(sem2_verde,HIGH);
void transicion2a1()
digitalWrite(sem1_rojo,LOW);
digitalWrite(sem1_naranja,HIGH);
digitalWrite(sem1_verde,LOW);
digitalWrite(sem2_rojo,LOW);
digitalWrite(sem2_naranja,HIGH);
digitalWrite(sem2_verde,LOW);
delay(2000);
digitalWrite(sem1_rojo,LOW);
digitalWrite(sem1_naranja,LOW);
digitalWrite(sem1_verde,HIGH);
digitalWrite(sem2_rojo,HIGH);
digitalWrite(sem2_naranja,LOW);
digitalWrite(sem2_verde,LOW);