Hallo zusammen,
ich habe in meinem untenstehenden Quellcode die folgende Fehlermeldung.
File "Motor.py", line 38
while GPIO.input(Echo.input) == 0:
^
SyntaxError: invalid syntax
Ich vermute das es ein Fehler in der Schleife ist.
Verbaut wurde:
- 1x HC-SR04 (soll später auf 3 Stk. erweitert werden)
- 1x Getriebemotor von joy-it (soll später auf 2. Stk erweitert werden)
-1x Motorsteuerung l298n
Der Roboter soll erstmal nur die folgenden Funktionen können:
- In alle Richtungen fahren
- Wenn der Abstand zu einem Gegenstand unter einem gewissen wert liegt soll gewendet werden.
Die Kommentare im Quellcode habe ich zu meiner Dokumentation verwendet. Ich hoffe das Ihr die Kommentare versteht. Falls diese an der falschen Stelle gesetzt oder unverständlich sind bitte ich zu entschuldigen.
Könnt Ihr behilflich sein?
P.s. Arbeite seit ca. 4 Wochen mit dem Pi und habe daher noch nicht so die Erfahrung auf dem Gebiet mit Python und dem Raspberry.
Schönen Gruß an alle Bastler
Bastelstube
#Module importieren
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
#Pins Motoren
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)
GPIO.setup(7, True)
GPIO.setup(11, True)
#Pins Sensor
GPIO.setup(Trigger.output, GPIO.OUT)
GPIO.setup(Echo.input, GPIO.IN)
GPIO.output(Trigger.output, False)
# Pause zwischen den einzelnen Messungen des HC-SR04
sleeptime.HC-SR04 = 1
#Hauptprogrammschleife
while True:
try:
#Abstandsmessung wird gestartet
GPIO.output(Trigger.output, True)
time.sleep(0.00001)
GPIO.output(Trigger.output, False)
print("Fahrt gestartet!")
#Motoren drehen sich solange bis Gegenstand kommt Vorwaertsbewegung
GPIO.output(13, True)
GPIO.output(15, False)
#Hier wird die Stopuhr gestartet
EinschaltZeit = time.time()
while GPIO.input(Echo.input) == 0:
EinschaltZeit = time.time() #Es wird solange die aktuelle Zeit gespeichert, bis das Signal aktiviert wird
while GPIO.input(Echo.input) == 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 < 2):
print("Hindernis!")
GPIO.output(13, False)
GPIO.output(15, True)
time.sleep(2)
#Hierhin muss der Teil das die Motoren sich jeweils in die entgegengesezte Richtung drehen
#GPIO.output(X, True)
#GPIO.output(X, False)
#time.sleep(2)
else:
#Der Roboter fährt geradeaus
GPIO.output(13, True)
GPIO.output(15, False)
#Der Abstand wird auf zwei Stellen hinterm Komma formatiert
Abstand = format((Dauer * 34300) / 2, '.2f')
#Der berechnete Abstand wird auf der Konsole ausgegeben
print("Der Abstand zum nächsten Hindernis beträgt:"), Abstand,("cm")
print("-------------------------------------------")
#Pause zwischen den einzelenen Messungen des HC-SR04
time.sleep(sleeptime.HC-SR04)
#Aufräumen und Programm beenden mit Strg+C
except(KeyboardInterrupt):
print('Fahrt gestoppt!')
GPIO.output(7, False)
GPIO.output(11, False)
GPIO.cleanup()
Alles anzeigen