NewPing / Ultraschall ohne Verzögerung

Liebe Mitglieder,

ist es möglich, einen Ultraschallsensor wie hrs04, ohne Verzögerung abzufragen?
Sowohl bei PulseIn als auch mit NewPing-Library pausiert der Script zwischen 2 und 24 Millisekunden.
Das klingt nach wenig, aber gerne würde ich drei Sensoren parallel zu Hall-Sensoren abfragen.
(In meinem Beispiel müsste ich unter 6ms kommen)

Anbei ein Minimal-Beispiel. Hat jemand eine Idee?
Vielen Dank im Voraus!

Liebe Grüße

#include <NewPing.h>
// Setup des Sensors
#define senden 37
#define empfangen 39
#define Distanz 400
NewPing sonar(senden, empfangen, Distanz);
void setup() {Serial.begin(115200);}
// Setup Variablen
long Zyklus = 0, vorausgegangen = 0, aktuell = 0;
int Differenz = 0, Differenz_max = 0;
void loop() {
// Bei jeder 10 000 Iteration ausführen
if (Zyklus % 10000 == 0)
{
// Sensor abfragen
Serial.print(sonar.ping_cm());
// An Serial senden
Serial.print(" cm; ");
Serial.print(Differenz_max);
Serial.println(" ms");
// Differenz_max wieder zurücksetzen
Differenz_max = 0;
}
// Zyklen updaten
aktuell = millis();
Differenz = aktuell - vorausgegangen;
if (Differenz > Differenz_max) {Differenz_max = Differenz;}
vorausgegangen = aktuell;
Zyklus = Zyklus + 1;
}

Wenn du es direkt, ohne die Library machst, kannst du es auch mit microsekunden erreichen.
Aktuell habe ich leider kein Beispiel, da Mobil unterwegs, aber mit Google findest du sicher ein Beispiel.

Hi,
Gerade doch noch was gefunden.
Beispiel

Vielen Dank für die Antworten.

HotSystems:
Wenn du es direkt, ohne die Library machst, kannst du es auch mit microsekunden erreichen.

Das ist die Lösung :wink: Hier für alle, die daran interessiert sind:
http://forum.arduino.cc/index.php?topic=396530.0

bAm2016:
Vielen Dank für die Antworten.

Das ist die Lösung :wink: Hier für alle, die daran interessiert sind:
Non-blocking ultrasonic sensor without interrupts and timers? - Programming Questions - Arduino Forum

das delay kannst du auch weglassen, ist nur besseren Darstellung.

Generell sind delays ungern gesehen und können durch eine Funktion mit millis ersetzt werden, und genau das wird in dem von dir verlinkten Post auch gezeigt.