Hola buenas,
He intentado montar un circuito con un sensor de distancia HC-SR04 de manera que detecte 4 distancias (50, 25, 10 y 1) y se vaya encendiendo un led por cada rango de distancia. Es decir, que en distancias entre 50cm y 25cm haya un led encendido, en distancias entre 25cm y 10 cm haya 2 leds encendidos, entre 10cm y 1cm haya 3 leds encendidos y en distancias inferiores estén los 4 leds encendidos. Además cuando la distancia sea inferior a 1cm también suene un piezo (buzzer). El problema es que el HC-SR04 no me reconoce la distancia. He colocado un bloque void monitoriza() para que se imprima en el monitor la distancia que esté detectando y así poder ver si funciona correctamente el HC-SR04
Os adjunto este enlace a Tinkercad con el circuito simulado. Ademas he adjuntado en este mensaje una captura de pantalla con el circuito simulado
long distancia;
long tiempo;
int led1=4;
int led2=5;
int led3=6;
int led4=7;
int buzzer=8;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, INPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(2, LOW);
delayMicroseconds(5);
digitalWrite(2, HIGH);
delayMicroseconds(10);
tiempo= pulseIn(3, HIGH);
distancia= int(0.017*tiempo);
monitoriza();
if (distancia<=50 && distancia>25){
digitalWrite (led1, HIGH);
digitalWrite (led2, LOW);
digitalWrite (led3, LOW);
digitalWrite (led4, LOW);
noTone(buzzer);
}
if (distancia<=25 && distancia>10){
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
digitalWrite (led3, LOW);
digitalWrite (led4, LOW);
noTone(buzzer);
}
if (distancia<=10 && distancia>1){
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
digitalWrite (led3, HIGH);
digitalWrite (led4, LOW);
noTone(buzzer);
}
if (distancia<=1){
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
digitalWrite (led3, HIGH);
digitalWrite (led4, HIGH);
tone(buzzer, 1000);
}
else {
digitalWrite (led1, LOW);
digitalWrite (led2, LOW);
digitalWrite (led3, LOW);
digitalWrite (led4, LOW);
noTone(buzzer);
}
delay(1000);
}
void monitoriza()
{
Serial.print("Distancia: ");
Serial.println(distancia);
}
Agradezco vuestra ayuda para detectar el problema
