der code mit NewPing war der erste, der bei mir auf anhieb funktionierte und auch die richtigen ergebnisse lieferte, da wollte ich natürlich dabei bleiben. Habe den code nun geändert
von:
Code:
void ping_distanz(void)
{
delay(500);// Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).
Serial.print("Ping: ");
Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range)
Serial.println(" cm");
start_ping = true;
}
in:
Code:
void ping_distanz(void)
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration / 58, 1; //58.2 /52,3
delay(500);
if (distance >= maximumRange || distance <= minimumRange)
{
Serial.println("-1");
}
else
{
Serial.println(distance);
}
start_ping = true;
}
die daten bei der pindefinition und im setup natürlich angepasst. Die art des aufrufs der "ping_distanz" funktion erfolgt auf die gleiche art wie vorher....
Der neue code funktioniert nun wie der alte, im wahrsten sinne des wortes, das verhalten ist identisch... 
noch eine idee?
Lesezeichen