Hola!
Tengo un problema con el calculo de distancia de mi sensor ultrasonico. Calcula bien la distancia pero al parecer de vez en cuando aparece un valor: 72cm/0,72cm al perder la senyal. He intentado hacer un reset para que no aparezca este numero y se mantenga el valor anterior pero no funciona.
Adjunto codigo:
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal.h>
int VO = 3;
int RS = 4;
int E = 5;
int D4 = 6;
int D5 = 7;
int D6 = 8;
int D7 = 9;
LiquidCrystal lcd (RS, E, D4, D5, D6, D7);
int pin_TRIG = 10; //Pin para enviar pulsos
int pin_ECHO = 11; //Pin para recibir la señal de rebote
int tiempoSenal;
int distanciaCM;
float distanciaM;
int ultimaDistancia = 0;
void setup() {
pinMode(pin_TRIG, OUTPUT);
pinMode(pin_ECHO, INPUT);
lcd.begin(16, 2);
analogWrite(VO, 0);
}
void loop() {
digitalWrite(pin_TRIG, LOW);
delayMicroseconds(5); //Estabiliza el sensor
digitalWrite(pin_TRIG, HIGH); //Envia el pulso para iniciar el sensor
delayMicroseconds(10);
tiempoSenal = pulseIn(pin_ECHO, HIGH); //Tiempo que dura el pin ECHO en HIGH
distanciaCM = (0.034 * tiempoSenal) / 2; //Convierte el tiempo en distancia (cm)
distanciaM = ((0.034 * tiempoSenal) / 2) / 100; //Convierte el tiempo en distancia (m)
if(distanciaCM != ultimaDistancia);
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("not found");
lcd.print(distanciaCM); //Muestra en la pantalla la distancia en centímetros
lcd.print(" :(");
ultimaDistancia = distanciaCM;
}
lcd.setCursor(0, 0);
lcd.print("Distancia: ");
lcd.print(distanciaCM); //Muestra en la pantalla la distancia en centímetros
lcd.print("cm ");
lcd.setCursor(0, 1);
lcd.print("Distancia: ");
lcd.print(distanciaM); //Muestra en la pantalla la distancia en metros
lcd.print("m");
delay(500);
}
También adjunto foto de la instalación: