HCSR04-Tablas de verdad

 La practica consistio llamada HCSR04-Tablas de verdad, la paractica se divide en dos el sircuito y la programación. Segun pepperl-fuchs los sensores ultrasónicos controlan partes específicas de las carretillas elevadoras para garantizar su precisión y fiabilidad. Con los sensores ultrasónicos, es posible determinar si la horquilla cuenta con un palé y hasta qué punto está insertada en él.

La programación:

const int pinecho = 9;

const int pintrigger = 12;

const int pinecho2 = 3;

const int pintrigger2 = 8;

const int pinecho3 = 5;

const int pintrigger3 = 2;


void setup() {

   Serial.begin(9600);

   pinMode(pintrigger, OUTPUT);

   pinMode(pinecho, INPUT);

   pinMode(pintrigger2, OUTPUT);

   pinMode(pinecho2, INPUT);

   pinMode(pintrigger3, OUTPUT);

   pinMode(pinecho3, INPUT);

}


void loop() {

   int cm = ping(pintrigger, pinecho);

   Serial.print("Distancia1: ");

   Serial.println(cm);

   delay(100);

  

   int cm2 = ping(pintrigger2, pinecho2);

   Serial.print("Distancia2: ");

   Serial.println(cm2);

   delay(100);

  

   int cm3 = ping(pintrigger3, pinecho3);

   Serial.print("Distancia3: ");

   Serial.println(cm3);

   delay(100);

  

   if((cm <=10)&&(cm2<=10)&&(cm3<=10))

   {

   // Retroceder

   //atrás

 digitalWrite (E2,HIGH); digitalWrite (E1,LOW);  

 digitalWrite (E4,HIGH); digitalWrite (E3,LOW);

 analogWrite(EN1,255);

 analogWrite(EN2,255);  

   }

 

  if((cm >=10)&&(cm2<=10)&&(cm3<=10))

    {

    // adelante

 digitalWrite (E1,HIGH); digitalWrite (E2,LOW);  

 digitalWrite (E3,HIGH); digitalWrite (E4,LOW);

 analogWrite(EN1,255);

 analogWrite(EN2,255);

  }

}

 

int ping(int pintrigger, int pinecho) {

   long duration, distanceCm;

   

   digitalWrite(pintrigger, LOW);  //para generar un pulso limpio ponemos a LOW 4us

   delayMicroseconds(4);

   digitalWrite(pintrigger, HIGH);  //generamos Trigger (disparo) de 10us

   delayMicroseconds(10);

   digitalWrite(pintrigger, LOW);

   

   duration = pulseIn(pinecho, HIGH);  //medimos el tiempo entre pulsos, en microsegundos

   

   distanceCm = duration * 10 / 292/ 2;   //convertimos a distancia, en cm

   return distanceCm;

}

Antes de esto realizamos un apequema investigación como guia para la programacción en la cual al miss nos sirvio un enlace.

SIN LIBRERÍAS

Para activar el sensor necesitamos generar un pulso eléctrico en el pin Trigger (disparador) de al menos 10us. Previamente, pondremos el pin a Low durante 4us para asegurar un disparo limpio.

Posteriormente usamos la función "pulseIn" para obtener el tiempo requerido por el pulso para volver al sensor. Finalmente, convertiremos el tiempo en distancia mediante la ecuación correspondiente.

Observar que intentamos emplear siempre aritmética de enteros, evitando usar números en coma flotante. Esto es debido a que las operaciones en coma flotante ralentizan mucho el procesador, y suponen cargar un gran número de librerías en memoria.

Comentarios