Rileva velocità al passaggio di due sensori (HC-SR04)

Avevo già inserito un post riguardante questo mio progetto, ma pare sia stato cancellato ... Fa nulla, ne approfitto per aprire un nuovo problema sempre sulla stessa tematica. Pare che con questo codice il passaggio di un elemento funzioni alla grande, alla fine basta aggiungere un delay(100) anziché 50

#include <Servo.h> 
#include <NewPing.h>
#include <avr/io.h>
#include <avr/wdt.h>

#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}

Servo myservo;

int triggerPort = 6;
int echoPort = 7;
int triggerPort2 = 8;
int echoPort2 = 9;
int pos=-1;


void setup() {

myservo.attach(12);

pinMode( triggerPort, OUTPUT );
pinMode( echoPort, INPUT );

pinMode( triggerPort2, OUTPUT );
pinMode( echoPort2, INPUT ); 
Serial.begin( 9600 ); 

}

void loop() {

float tempo=0;
  
delay(100);

myservo.write(pos);
 
float t1 = 0;
  
digitalWrite( triggerPort, LOW );
delayMicroseconds (3); 
//invia un impulso di 10microsec su trigger
digitalWrite( triggerPort, HIGH );
delayMicroseconds(3);
digitalWrite( triggerPort, LOW );

long duration = pulseIn( echoPort, HIGH );
   
long r = 0.034 * duration / 2;


float t;


   if ( (r>0 && r<50) ) { // ok. l'oggetto è passato dal via
      Serial.println("      AGGANCIATO SENSORE 1");
      t = millis();  // Mi segno il tempo di partenza
     
     if(t<0){
       t=(t*(-1));
     }
     
     else t=t;
     
      while ( (millis() - t ) < 10000 ) // tempo massimo ammesso 10 secondi
        {
          //porta bassa l'uscita del trigger
          digitalWrite( triggerPort2, LOW );
          delayMicroseconds (3); 
          //invia un impulso di 10microsec su trigger
          digitalWrite( triggerPort2, HIGH );
          delayMicroseconds( 3 );
          digitalWrite( triggerPort2, LOW );
 
          long duration2 = pulseIn( echoPort2, HIGH );
 
          long r2 = 0.034 * duration2 / 2;
      
            if ( (r2>0 && r2<50) ) { // Ok e' arrivato al secondo sensore
             
              t1 = millis(); // segno il tempo di arrivo
              tempo = (t1 - t ) ;
               Serial.println("---------------inizio--------------------");
Serial.println("---------------SENSORE1--------------------");
Serial.print("Distanza: ");Serial.println(r);
Serial.print("Duration: ");Serial.println(duration);
Serial.print("Tempo1: ");Serial.print(t/1000);Serial.println("sec");
Serial.println("---------------SENSORE2--------------------");
Serial.print("Distanza2: ");Serial.println(r2);
Serial.print("Duration2: ");Serial.println(duration2);
Serial.print("Tempo2: ");Serial.print(t1/1000);Serial.println("sec ");
Serial.print("TempototDentro: ");Serial.print(tempo/1000);Serial.println("sec ");
Serial.println("---------------fine--------------------");
              break ; // esco dal while prima che scada
            }
      Serial.println("!!!...NON AGGANCIATO SENSORE 2...!");      
      t1 = 0 ;
    }
    
  if (tempo  > 0  ) {
    Serial.print ("Tempo dentro:  ");
    Serial.print(tempo/1000);
    Serial.println("sec");
    //----INIZIO FUNZIONE SERVO-----
   
  while(pos!=0){
  for(pos = 1; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees 
  {                                  // in steps of 1 degree 
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  
  delay(3000);
  
  for(pos = 180; pos>=0; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  break;
 }
    //---- FUNZIONE SERVO-----

 
  /* Serial.println(" ");
  Serial.println("RESET ARDUINO...");
  Reset_AVR(); */
 
  }
 } 
 
  
   
}

PROBLEMA: Ho bisogno che questi due sensori rilevino OGNI TIPO DI VELOCITà dalle più basse alle più alte, pare invece che con il delay(100) non riesca a rilevare le velocità alte.. C'è un modo per aumentare la velocità entro cui i due sensori possano rilevarmi un movimento?

joe95it:
Avevo già inserito un post riguardante questo mio progetto, ma pare sia stato cancellato ...

Dire che ti sbagli, è sotto Generale
https://forum.arduino.cc/index.php?topic=499506.0

> joe95it: in conformità al REGOLAMENTO, punto 13, il cross-posting è proibito (anche tra lingue diverse) e tu stai discutendo di questo/simile argomento già QUI ...
... ti prego di continuare nel thread che hai già aperto e dove ti sono state già date delle risposte senza aprire ulteriori thread relativo a problematiche simili/uguali. Grazie.

Guglielmo