Hallo zusammen,
ich habe für meinen Raspberry Pi B+ ein Ultraschall-Modul(HC-SR04) gekauft.
Es soll für folgendes Szenario eingesetzt werden:
Das von mir gebastelte Raspberry Pi - Car kann mit Hilfe von 2 Infrarotsensoren einer Linie folgen. Falls nun ein Gegenstand den Weg behindern sollte, dann soll das Auto einfach mal umdrehen. So weit so gut.
Im Großen und Ganzen funktioniert dies auch.
Leider bekommt das Ultraschallmodul manchmal, für mich nicht nachvollziehbar, falsche Werte zurück.
Z.B. zu erwarten sind ca. 50 cm aber es liefert ein Wert unter 10 cm zurück.
Dies passiert nur ab und zu.
Das ganze läuft über den Webserver WebIOPi.
Zum einen die Dinstanz-Funktion:
def distanz():
GPIO.output(pin_trigger, True)
time.sleep(0.00001)
GPIO.output(pin_trigger, False)
StartZeit = time.time()
StopZeit = time.time()
while GPIO.input(pin_echo) == 0:
StartZeit = time.time()
while GPIO.input(pin_echo) == 1:
StopZeit = time.time()
TimeElapsed = StopZeit - StartZeit
distanz = (TimeElapsed *34300) / 2
if (distanz >= 0 and distanz <= 350):
return distanz
else:
return 100
Alles anzeigen
Und nun noch die dazugehörige Loop-Funktion:
def loop():
if(RUN):
messung=distanz()
if(messung > 20):
if(True):
staticPinL=GPIO.input(pir_pin_L)
staticPinR=GPIO.input(pir_pin_R)
if (not(staticPinL) and not(staticPinR)):
forward(0.01)
elif ((staticPinL) and (staticPinR)):
stop(0.01)
elif (staticPinR):
spinLeft(0.01)
elif (staticPinL):
spinRight(0.01)
else:
forward(0.2)
backward(0.2)
else:
print(messung)
turn(0.5)
webiopi.sleep(0.01)
Alles anzeigen
Kann es sein, sobald das Ultraschallmodul in einem falschen Winkel auf ein Objekt trifft, dass dann falsche Werte zurückgeliefert werden?
Vielen Dank schon mal im Vorraus
Gruß
Kevin