Fehler im Quelltext des Roboters

  • 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?:danke_ATDE:


    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



  • Habe die whiles jetzt alle eins weiter Eingerücjt. Wie schließe ich das Try denn?:conf:


  • Hier nochmal der aktuelle Quellcode


  • sleeptime.HC-SR04 = 1

    so benennt man doch keine Variablen.


    1. Der Interpretiert zwischen sleeptime.HC und SR04 das "-" als Minusoperand

    2. ein Punkt in einer Variable ist auch unvorteilhaft


    Bennen das mal in SLEEPTIME_HC_04 um. Natürlich alle vorkommenden Variablen so dann bennenen.


    EDIT: Und deine GPIO Schaltungen mit RPi.GPIO denke ich sind so auch nicht richtig.

    Wo wird der Variablenname Echo und Trigger definiert? und das Echo.output ist ann anschließend auch falsch mit dem "."


    2. EDIT: Mit welchem Editor programmierst du?


  • Danke, dass hat geholfen.


    Doch leider geht es weiter mit den Fehlern


    Traceback (most recent call last): File "Motor.py", line 7, in <module> GPIO.setmode(GPIO.BOARD) ValueError: A different mode has already been set!

  • Python
    1. GPIO.setmode(GPIO.BCM)
    2. GPIO.setmode(GPIO.BOARD)

    Das hier wird dir auch noch Probleme bereiten. Entweder die Pinbelegung auch BOARD oder auf BCM konfigurieren. Beides geht nicht. Welches das richtige ist, ist abhängig davon nach welchen Schema du deine Schaltung jetzt verdrahtet hast.


    Editorempfehlung: PyCharm

    Hilft dir auch leichter Fehler zu entdecken.

  • Zitat

    Python

    1. GPIO.setmode(GPIO.BCM)
    2. #Pins Motoren
    3. GPIO.setmode(GPIO.BOARD)

    Das hier wird dir auch noch Probleme bereiten. Entweder die Pinbelegung auch BOARD oder auf BCM konfigurieren. Beides geht nicht. Welches das richtige ist, ist abhängig davon nach welchen Schema du deine Schaltung jetzt verdrahtet hast.

    So dämlich das jetzt klingt, ich bin immer davon ausgegangen, dass BCM für Schaltungen ohne Breadboard steht und BOARD für Schaltungen wo ein Breadboard zusätzlich verwendet wird.^^

  • Zitat

    Desweiteren würd ich dir gleich noch als Ersatz für RPi.GPIO (veraltetes nicht mehr weiterentwickeltes Modul) gpiozero empfehlen. Du hast eh nur ein paar Zeilen Code was zum tauschen wären...


    Der Code soll ja später noch um einiges erweitert werden. Hier geht es ja zunächst nur mal um die Grundfunktionen.

    Was müsste denn geändert werden, da ich von diesem Modul noch nichts gehört habe?

  • Wie müsste ich denn den nachfolgenden Teil zum Beispiel umschreiben sodass er auf die gpiozero Library passt da ich momentan überhaupt keinen Ansatz habe wie dies funktioniert?