amigos resulta ser que tengo un problema con un sensor hc-sr04, lo tengo programado para cuando un objeto este menos de 20 cm se encienda un led o de lo contrario se apague...
mi inconveniente es que el sensor arroja por unos instantes el valor "0" (cero centímetros) sin que tenga ningún tipo de obstáculo presente y hace encender mi led por un instante cosa que no quiero que pase :
o en el peor de los casos se queda congelada en "0" todo el tiempo sin importar lo que haga, hasta apretar de nuevo el botón de reset del arduino...
este es el cÓdigo que estoy usando
como puedo evitar que pase esto? gracias desde ya
mi inconveniente es que el sensor arroja por unos instantes el valor "0" (cero centímetros) sin que tenga ningún tipo de obstáculo presente y hace encender mi led por un instante cosa que no quiero que pase :
o en el peor de los casos se queda congelada en "0" todo el tiempo sin importar lo que haga, hasta apretar de nuevo el botón de reset del arduino...
este es el cÓdigo que estoy usando
code: [select]
#define trigpin 9
#define echopin 8
#define led 12
void setup()
{ serial.begin (9600);
pinmode(trigpin, output);
pinmode(echopin, input);
pinmode(led, output);
}
void loop()
{
long duracion, distancia ;
digitalwrite(trigpin, low);
delaymicroseconds(2);
digitalwrite(trigpin, high);
delaymicroseconds(10);
digitalwrite(trigpin, low);
duracion = pulsein(echopin, high) ;
distancia = duracion / 2 / 29.1 ;
serial.println(string(distancia) + " cm.") ;
if ( distancia < 20 )
digitalwrite ( led , high) ;
else
digitalwrite( led , low) ;
delay (500) ;
}
como puedo evitar que pase esto? gracias desde ya
hola yo utilizo este código te lo dejo para ver si te sirve es similar al que usas solo que yo puse en el rango de distancia mínima 10 cm. también podrías usar la librería newping que esta muy bien optimizada para este tipo de sensores. saludos
código:
código:
code: [select]
#define pecho 6
#define ptrig 7
long duracion, distancia;
void setup() {
serial.begin (9600); // inicializa el puerto seria 9600 baudios
pinmode(pecho, input); // define el pin 6 como entrada (echo)
pinmode(ptrig, output); // define el pin 7 como salida (triger)
pinmode(13, 1); // define el pin 13 como salida
}
void loop() {
digitalwrite(ptrig, low);
delaymicroseconds(2);
digitalwrite(ptrig, high); // genera el pulso de triger por 10ms
delaymicroseconds(10);
digitalwrite(ptrig, low);
duracion = pulsein(pecho, high);
distancia = (duracion/2) / 29; // calcula la distancia en centimetros
if (distancia >= 500 || distancia <= 0){ // si la distancia es mayor 500cm o menor 0cm
serial.println("---"); // no mide nada
}
else {
serial.print(distancia); // envia el valor de la distancia por el puerto serial
serial.println("cm"); // le coloca la distancia los centimetros "cm"
digitalwrite(13, 0); // en bajo el pin 13
}
if (distancia <= 10 && distancia >= 1){
digitalwrite(13, 1); // en alto el pin 13 si la distancia es menor 10cm
serial.println("alarma......."); // envia la palabra alarma por el puerto serial
}
delay(400); // espera 400ms para que se logre ver la distancia en la consola
}
Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > Sensor Ultrasonico - mediciones erróneas
arduino
Comments
Post a Comment