Detector de distancia con Arduino y módulo ultrasónico HC-SR04

Detector de distancia con Arduino y módulo ultrasónico HC-SR04

Dispositivo de detección de distancia con aviso acústico y visual.

En función de la distancia detectada por el HC-SR04 el dispositivo emitirá un tono más grave o más agudo y encenderá un mayor o menor número de leds.

Paso 1: Materiales

- 1 x sensor ultrasónico HC-SR04

- 6 x LED s (2 x verdes, 2 x rojos, 2 x amarillos)

- 13 x jumpers cables

- 1 x timbre

- 7 x resistencias de 220 ohm 

Paso 2:  Conexiones


Conectar todos los componenetes igual que en la imagen.

Los puertos  13-8 son para los LEDs

Los puertos 7,6 para el seonsor Ultrasonico

El Puerto 3 es el timbre

Paso 3: El Código

Aquí teneis el código para incluir.

#define trigPin 7

#define echoPin 6

#define led 13

#define led2 12

#define led3 11

#define led4 10

#define led5 9

#define led6 8

#define buzzer 3

int sound = 250;

void setup() {

Serial.begin (9600);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

pinMode(led, OUTPUT);

pinMode(led2, OUTPUT);

pinMode(led3, OUTPUT);

pinMode(led4, OUTPUT);

pinMode(led5, OUTPUT);

pinMode(led6, OUTPUT);

pinMode(buzzer, OUTPUT);

}

void loop() {

long duration, distance;

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

distance = (duration/2) / 49.1;

if (distance <= 50) {

digitalWrite(led, HIGH);

sound = 250;

for (int i=0; i<500; i++) { // generate a 1KHz tone for 1/2 second

digitalWrite(buzzer, HIGH);

delayMicroseconds(500);

digitalWrite(buzzer, LOW);

delayMicroseconds(500);

}

}

else {

digitalWrite(led,LOW);

}

if (distance < 45) {

digitalWrite(led2, HIGH);

sound = 260;

}

else {

digitalWrite(led2, LOW);

}

if (distance < 40) {

digitalWrite(led3, HIGH);

sound = 270;

}

else {

digitalWrite(led3, LOW);

}

if (distance < 35) {

digitalWrite(led4, HIGH);

sound = 280;

}

else {

digitalWrite(led4,LOW);

}

if (distance < 30) {

digitalWrite(led5, HIGH);

sound = 290;

}

else {

digitalWrite(led5,LOW);

}

if (distance < 25) {

digitalWrite(led6, HIGH);

sound = 300;

}

else {

digitalWrite(led6,LOW);

}

if (distance > 50 || distance <= 0){

Serial.println("Out of range");

noTone(buzzer);

}

else {

Serial.print(distance);

Serial.println(" cm");

tone(buzzer, sound);

}

delay(500);

}

Espero que os guste. 
Os incluimos el link al artículo original y su video.