Hallo zusammen
Ich bin neu auf dem Gebiet Raspberry und möchte ein Roboterauto aus ihm bauen. Am Anfang als ich den Sensor mit den Motoren kombiniert habe, kamen RuntimeWarnings aber das Programm lief weiter. Dann sah ich im Internet dass ich den Befehl GPIO.cleanup() einbauen muss und habe das getan. Dann funktionierte der Ultraschallabstandsensor nicht mehr. Dadurch brach das Skript ab. Dann platzierte ich den Befehl an einen anderen Ort und nun funktioniert gar nichts mehr. Es kommen immer RuntimeWarnings und es läuft nichts mehr. Ich habe keine Ahnung was ich tun soll.
Danke schon Mal im Vorraus für Hilfe
Code
import sys
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
Forward=22, 23
Backward=17, 27
GPIO.setmode(GPIO.BCM)
GPIO.setup(Forward, GPIO.OUT)
GPIO.setup(Backward, GPIO.OUT)
# Hier können die jeweiligen Eingangs-/Ausgangspins ausgewählt werden
Trigger_AusgangsPin = 5
Echo_EingangsPin = 6
# Die Pause zwischen den einzelnen Messugnen kann hier in Sekunden eingestellt werden
sleeptime = 0.8
# Hier werden die Ein-/Ausgangspins konfiguriert
GPIO.setup(Trigger_AusgangsPin, GPIO.OUT)
GPIO.setup(Echo_EingangsPin, GPIO.IN)
GPIO.output(Trigger_AusgangsPin, False)
def forward(x):
GPIO.output(Forward, GPIO.HIGH)
time.sleep(x)
GPIO.output(Forward, GPIO.LOW)
def reverse(x):
GPIO.output(Backward, GPIO.HIGH)
time.sleep(x)
GPIO.output(Backward, GPIO.LOW)
while True:
GPIO.output(Trigger_AusgangsPin, True)
time.sleep(0.00001)
GPIO.output(Trigger_AusgangsPin, False)
# Hier wird die Stopuhr gestartet
EinschaltZeit = time.time()
while GPIO.input(Echo_EingangsPin) == 0:
EinschaltZeit = time.time() # Es wird solange die aktuelle Zeit gespeichert, bis das Signal aktiviert wird
while GPIO.input(Echo_EingangsPin) == 1:
AusschaltZeit = time.time() # Es wird die letzte Zeit aufgenommen, wo noch das Signal aktiv war
# Die Differenz der beiden Zeiten ergibt die gesuchte Dauer
Dauer = AusschaltZeit - EinschaltZeit
# Mittels dieser kann nun der Abstand auf Basis der Schallgeschwindigkeit der Abstand berechnet werden
Abstand = (Dauer * 34300) / 2
# Überprüfung, ob der gemessene Wert innerhalb der zulässigen Entfernung liegt
if Abstand < 20:
print("reverse")
reverse(1)
else:
print("forward")
forward(1)
GPIO.cleanup()
Alles anzeigen