Hallo,
Ich habe an einem Roboter Fahrzeug zwei Ultraschall Sensoren angebaut. Diese möchte ich beide in einem python Skript abfragen.
Einzelt funktioniert es in zwei unterschiedlichen Dateien. Nur mein Versuch das in einer Datei zusammen ab zu fragen scheitert.
Ultraschall Sensor Links
Code
#Bibliotheken einbinden
import RPi.GPIO as GPIO
import time
#GPIO Modus (BOARD / BCM)
GPIO.setmode(GPIO.BCM)
#GPIO Pins zuweisen
GPIO_TRIGGER = 16
GPIO_ECHO = 5
#Richtung der GPIO-Pins festlegen (IN / OUT)
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
def distanz():
# setze Trigger auf HIGH
GPIO.output(GPIO_TRIGGER, True)
# setze Trigger nach 0.01ms aus LOW
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
StartZeit = time.time()
StopZeit = time.time()
# speichere Startzeit
while GPIO.input(GPIO_ECHO) == 0:
StartZeit = time.time()
# speichere Ankunftszeit
while GPIO.input(GPIO_ECHO) == 1:
StopZeit = time.time()
# Zeit Differenz zwischen Start und Ankunft
TimeElapsed = StopZeit - StartZeit
# mit der Schallgeschwindigkeit (34300 cm/s) multiplizieren
# und durch 2 teilen, da hin und zurueck
distanz = (TimeElapsed * 34300) / 2
return distanz
if __name__ == '__main__':
try:
while True:
abstand = distanz()
print ("Gemessene Entfernung = %.1f cm" % abstand)
time.sleep(1)
# Beim Abbruch durch STRG+C resetten
except KeyboardInterrupt:
print("Messung vom User gestoppt")
GPIO.cleanup()
Alles anzeigen
Ultraschall Sensor rechts
Code
#Bibliotheken einbinden
import RPi.GPIO as GPIO
import time
#GPIO Modus (BOARD / BCM)
GPIO.setmode(GPIO.BCM)
#GPIO Pins zuweisen
GPIO_TRIGGER = 12
GPIO_ECHO = 13
#Richtung der GPIO-Pins festlegen (IN / OUT)
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
def distanz():
# setze Trigger auf HIGH
GPIO.output(GPIO_TRIGGER, True)
# setze Trigger nach 0.01ms aus LOW
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
StartZeit = time.time()
StopZeit = time.time()
# speichere Startzeit
while GPIO.input(GPIO_ECHO) == 0:
StartZeit = time.time()
# speichere Ankunftszeit
while GPIO.input(GPIO_ECHO) == 1:
StopZeit = time.time()
# Zeit Differenz zwischen Start und Ankunft
TimeElapsed = StopZeit - StartZeit
# mit der Schallgeschwindigkeit (34300 cm/s) multiplizieren
# und durch 2 teilen, da hin und zurueck
distanz = (TimeElapsed * 34300) / 2
return distanz
if __name__ == '__main__':
try:
while True:
abstand = distanz()
print ("Gemessene Entfernung = %.1f cm" % abstand)
time.sleep(1)
# Beim Abbruch durch STRG+C resetten
except KeyboardInterrupt:
print("Messung vom User gestoppt")
GPIO.cleanup()
Alles anzeigen
Mein Versuch beide in einer Datei an zu sprechen und erst einmal nur den Wert aus zu geben
Code
#Bibliotheken einbinden
import RPi.GPIO as GPIO
import time
#GPIO Modus (BOARD / BCM)
GPIO.setmode(GPIO.BCM)
#GPIO Pins zuweisen
GPIO_TRIGGER_links = 16
GPIO_ECHO_links = 5
GPIO_TRIGGER_rechts = 12
GPIO_ECHO_rechts = 13
#Richtung der GPIO-Pins festlegen (IN / OUT)
GPIO.setup(GPIO_TRIGGER_links, GPIO.OUT)
GPIO.setup(GPIO_ECHO_links, GPIO.IN)
GPIO.setup(GPIO_TRIGGER_rechts, GPIO.OUT)
GPIO.setup(GPIO_ECHO_rechts, GPIO.IN)
def distanz_links():
# setze Trigger auf HIGH
GPIO.output(GPIO_TRIGGER_links, True)
# setze Trigger nach 0.01ms aus LOW
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER_links, False)
StartZeit = time.time()
StopZeit = time.time()
# speichere Startzeit
while GPIO.input(GPIO_ECHO_links) == 0:
StartZeit = time.time()
# speichere Ankunftszeit
while GPIO.input(GPIO_ECHO_links) == 1:
StopZeit = time.time()
# Zeit Differenz zwischen Start und Ankunft
TimeElapsed = StopZeit - StartZeit
# mit der Schallgeschwindigkeit (34300 cm/s) multiplizieren
# und durch 2 teilen, da hin und zurueck
distanz = (TimeElapsed * 34300) / 2
return distanz_links
#if __name__ == '__main__':
# try:
# while True:
# abstand_links = distanz()
# print ("Gemessene Entfernung Rechts= %.1f cm" % abstand_links)
# time.sleep(1)
def distanz_rechts():
# setze Trigger auf HIGH
GPIO.output(GPIO_TRIGGER_rechts, True)
# setze Trigger nach 0.01ms aus LOW
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER_rechts, False)
StartZeit = time.time()
StopZeit = time.time()
# speichere Startzeit
while GPIO.input(GPIO_ECHO_rechts) == 0:
StartZeit = time.time()
# speichere Ankunftszeit
while GPIO.input(GPIO_ECHO_rechts) == 1:
StopZeit = time.time()
# Zeit Differenz zwischen Start und Ankunft
TimeElapsed = StopZeit - StartZeit
# mit der Schallgeschwindigkeit (34300 cm/s) multiplizieren
# und durch 2 teilen, da hin und zurueck
distanz = (TimeElapsed * 34300) / 2
return distanz_rechts
if __name__ == '__main__':
try:
while True:
abstand_links = distanz_links()
print ("Gemessene Entfernung Links=",abstand_links)
time.sleep(1)
abstand_rechts = distanz_rechts()
print ("Gemessene Entfernung Rechts=",abstand_rechts)
time.sleep(1)
# Beim Abbruch durch STRG+C resetten
except KeyboardInterrupt:
print("Messung vom User gestoppt")
GPIO.cleanup()
Alles anzeigen
Kann mir jemand sagen warum bei meinem Versuch die Funktion distanz Links und Distanz rechts keine Werte ausgeben?
Danke