Problema con HC-SR04


buenas noches todos, soy un poco novato en este foro y perdonen si este hilo no va aquí o ya existe pero no lo encuentro.
tengo un sensor hc-sr04 programado de esta manera:

long distancia;

long tiempo;

void setup(){
  serial.begin(9600);
  pinmode(11, output);
  pinmode(12, input);
}

void loop(){
  digitalwrite(11,low);
  delaymicroseconds(5);
  digitalwrite(11, high);
  delaymicroseconds(10);
  tiempo=pulsein(12, high);
  distancia= int(0.017*tiempo);
  serial.println("distancia ");
  serial.println(distancia);
  serial.println(" cm");
  delay(1000);
}


el problema es que cuando intento medir distancias superiores 70 cm aproximadamente, o cuando detecta una superficie estraña ( algo curvo) marca una lectura de 0cm, pero se queda ahí, mandando esa lectura aún que varie la distancia ( le pongo la mano delante ), y tengo que desconectar y conectar el pin del voltaje para que vuelva medir.
por debajo de los 70 cm aproximadamente va perfecto.

?alguna idea?

fijate si te ayuda este codigo
code: [select]
/*
sensor de proximidad y al ser inferior 10cm
envia un pulso de alarma por  el pin 13

 hc-sr04 conexiones:
  vcc al arduino 5v
  gnd al arduino gnd
  echo al arduino pin 6
  trig al arduino pin 7
  
descargar planos de conexiones en http://elprofegarcia.com/
 */
 
#define pecho 6
#define ptrig 7
#define micro 8
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
  pinmode(8, 1);
  }
  
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
    digitalwrite(8,0);                 // el pin 8 en bajo
  }
  
   if (distancia <= 10 && distancia >= 1){
    digitalwrite(13, 1);     // en alto el pin 13 si la distancia es menor 10cm
    digitalwrite(8,1);
    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
}

es facil, si te ayuda cambia el titulo de tu post (resuelto)


Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > Problema con HC-SR04


arduino

Comments