Primero el Circuito

PROGRAMA
const int TriggerPin =12;
const int EchoPin = 11;
//luces verdes
const int LEDV1 = 10;
const int LEDV2 = 9;
//luces amarillas
const int LEDA1 = 8;
const int LEDA2 = 7;
//luces rojas
const int LEDR1 = 6;
const int LEDR2 = 5;
float distancia;
long tiempo;
void setup() {
//activacion del monitor
Serial.begin(9600);
//configurar leds como outputs
pinMode(LEDV1, OUTPUT);
pinMode(LEDV2, OUTPUT);
pinMode(LEDA1, OUTPUT);
pinMode(LEDA2, OUTPUT);
pinMode(LEDR1, OUTPUT);
pinMode(LEDR2, OUTPUT);
//PIN TRIG COMO SALIDA
pinMode(TriggerPin,OUTPUT);
// pin ECHO como entrada
pinMode(EchoPin, INPUT);
}
void Secuencia(int valor){
if (valor == 0){
digitalWrite(LEDV1, LOW);
digitalWrite(LEDV2, LOW);
digitalWrite(LEDA1, LOW);
digitalWrite(LEDA2, LOW);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
}
else if (valor == 1){
digitalWrite(LEDV1, HIGH);
digitalWrite(LEDV2, LOW);
digitalWrite(LEDA1, LOW);
digitalWrite(LEDA2, LOW);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
}
else if (valor == 2){
digitalWrite(LEDV1, HIGH);
digitalWrite(LEDV2, HIGH);
digitalWrite(LEDA1, LOW);
digitalWrite(LEDA2, LOW);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
}
else if (valor == 3){
digitalWrite(LEDV1, HIGH);
digitalWrite(LEDV2, HIGH);
digitalWrite(LEDA1, HIGH);
digitalWrite(LEDA2, LOW);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
}
else if (valor == 4){
digitalWrite(LEDV1, HIGH);
digitalWrite(LEDV2, HIGH);
digitalWrite(LEDA1, HIGH);
digitalWrite(LEDA2, HIGH);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
}
else if (valor == 5){
digitalWrite(LEDV1, HIGH);
digitalWrite(LEDV2, HIGH);
digitalWrite(LEDA1, HIGH);
digitalWrite(LEDA2, HIGH);
digitalWrite(LEDR1, HIGH);
digitalWrite(LEDR2, LOW);
}
else if (valor == 6){
digitalWrite(LEDV1, HIGH);
digitalWrite(LEDV2, HIGH);
digitalWrite(LEDA1, HIGH);
digitalWrite(LEDA2, HIGH);
digitalWrite(LEDR1, HIGH);
digitalWrite(LEDR2, HIGH);
};
};
void loop() {
delay(150);
digitalWrite(TriggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(TriggerPin, LOW);
//medimos el pulso de respuestas
tiempo = (pulseIn(EchoPin, HIGH)/2);
distancia = float(tiempo * 0.0343);
Serial.print("Distancia");
Serial.println(distancia);
if (distancia >= 300){
Secuencia(0);
} else if ((distancia <= 299) && (distancia >= 250)){
Secuencia(1);
} else if ((distancia <= 249) && (distancia >= 200)){
Secuencia(2);
} else if ((distancia <= 199) && (distancia >= 149)){
Secuencia(3);
} else if ((distancia <= 149) && (distancia >= 100)){
Secuencia(4);
} else if ((distancia <= 99) && (distancia >= 50)){
Secuencia(5);
} else if ((distancia <= 49) && (distancia >= 0)){
Secuencia(6);
};
delay(1000);
}
DESAFIOS:
- QUE PRENDA AL REVES: Es decir que primero prenda los rojos y cuando este bien cerca, que prenda los verde.
- PARPADEO: Que si esta lejos, los rojos APENAS parpadean .. pero que a medida que se acerque AUMENTE la velocidad de parpadeo.