Académique Documents
Professionnel Documents
Culture Documents
DETECCIÓN DE OBSTÁCULOS
Materiales:
1 Led Verde
1 Led Amarillo
1 Led Rojo
1 buzzer
3 resistencias 220 Ω
1 protoboard
Circuito
ALGORITMO
1. Si
1. Encender LED rojo
2. Emitir sonido 2
3. Salir
2. No
1. Continuar
De los dos algoritmos anteriores, deducimos que vamos a necesitar varios umbrales de decisión,
uno para cada situación. Podemos coger una simple regla y determinarlos.
Para calcular el tiempo se utiliza la función nativa de Arduino pulseIn. Esta función nos devuelve el
tiempo transcurrido hasta que cambia de estado. Cuando la onda ultrasónica viaja por el aire, rebota
en el objeto y es detectada por el echo, el pin cambia de estado a alto (HIGH).
El tiempo obtenido por la función pulseIn debe ser dividido por 2. Esto es debido a que recorre dos
veces la distancia, va hacia el objeto, rebota y vuelve hasta el sensor y por lo tanto tarda el doble.
Código
#define LEDVERDE 2
#define LEDAMARILLO 3
#define LEDROJO 4
#define TRIGGER 5
#define ECHO 6
#define BUZZER 9
void setup() {
Serial.begin(9600);
pinMode(LEDVERDE,OUTPUT);
pinMode(LEDAMARILLO,OUTPUT);
pinMode(LEDROJO,OUTPUT);
pinMode(BUZZER,OUTPUT);
pinMode(TRIGGER,OUTPUT);
pinMode(ECHO,INPUT);
apagarLeds();
void loop() {
iniciarTrigger();
//Obtener la distancia
apagarLeds();
alertas(distancia);
void apagarLeds()
digitalWrite(LEDVERDE,LOW);
digitalWrite(LEDAMARILLO,LOW);
digitalWrite(LEDROJO,LOW);
}
void alertas(float distancia)
digitalWrite(LEDVERDE,HIGH);
tone(BUZZER,2000,200);
digitalWrite(LEDAMARILLO,HIGH);
tone(BUZZER,2500,200);
digitalWrite(LEDROJO,HIGH);
tone(BUZZER,3000,200);
float calcularDistancia()
//Obtenemos la distancia en cm, hay que convertir el tiempo a segundos ya que esta en
microsegundos
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
delay(500);
return distancia;
void iniciarTrigger()
digitalWrite(TRIGGER,LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER,HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER,LOW);