HC-SR04 Ultraschallsensor Abtastrate erhöhen?

MarshallMathers

Lt. Commander
Registriert
Sep. 2016
Beiträge
1.250
Hallo,

Ich bin gerade dabei, mir eine DIY Alarmanlage zu bauen. Ich nutze dazu einen Arduino ATmega 2560 und den HC-SR04 Ultraschallsensor. Programmiert wird der Microcontroller mit der lokalen Arduino IDE (Nicht webbasiert) und bis jetzt ist es, dass der Sensor bei einer Baudrate von 9600 Daten seriell bereitstellt und drei LEDs aufleuchten lässt. Allerdings reagiert mir das ganze System dabei zu träge. Hier mein Code:

#include "SR04.h"
int TRIG_PIN = 12;
int ECHO_PIN = 11;
int LED1 = 4;
int LED2 = 5;
int LED3 = 6;
SR04 sr04 = SR04(ECHO_PIN, TRIG_PIN);
long a;

void setup()
{
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
Serial.begin(9600);
delay(1000);
}

void loop()
{
a = sr04.Distance();
Serial.print(a);
Serial.println("cm");
delay(200);

if (a <= 10)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
}

if (a >= 10)
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
}
}

Ich benutze die SR04.h Bibliothek.

Kann ich den delay() nach der Abfrage soweit verringern wie ich will oder hat das negative Effekte?



- Marshall
 
Zuletzt bearbeitet:
Ich kenne zwar die SR04 Library nicht, aber dem Sensor an sich ist es wurscht wie schnell du ihn hintereinander abfeuerst.


Das ganze selbst zu implementieren ist übrigens sehr einfach, hier mal mit mbed:

Code:
float getDistance() {
    echoTimer.stop();
    echoTimer.reset();
    
    trigger = 1;
    wait_us(12);
    trigger = 0;
    
    while (!echo);
    echoTimer.start();
    while (echo);
    echoTimer.stop();
    
    int time = echoTimer.read_us();
    
    if (time >= 200000) { //out of range
        return -1;
    }
    
    float distance = (time / 2) * 0.03432; // cm/µs, result in cm
    
    return distance;
}

trigger und echo sind dabei die Pins des Sensors.
 
Zuletzt bearbeitet:
Ich war mir nur nicht ganz sicher, ob das wirklich sicher ist. Habe online dazu nichts gefunden und wollte mir daher hier eine zweite Meinung einholen. Danke, ich finde einfach mal meinen Sweetspot,.
 
Zurück
Oben