Servo-Pendelbewegung mit class

  • Das ist nicht weiter schwer:


    Python
    class Servo:
    
        def __init__(self, pi, ...):
            self._pi = pi
            ...
    
    def main():
        pi = pigpio.pi()
        servo = Servo(pi, ...)
        hr_sr4 = HCSR4(pi, ...)

    Also einfach ein Argument wie jedes anderen.

  • Hallo,

    bräuchte wieder Unterstützung :blush:


    bringt Fehler:


    File "tirob.py", line 30, in <module>

    s1 = servo(pi,17)

    File "tirob.py", line 15, in __init__

    self.pi.set_mode(self.spin, pigpio.OUTPUT)

    TypeError: set_mode() missing 1 required positional argument: 'mode'


    Habe ich set_mode richtig versorgt? Oder ist pigpio nicht richtig installiert?


    Danke

  • Der Fehler ist im Code. Schau dir dessen Dokumentation an. Und überleg mal was der Fehler bedeuten könnte.

  • Eh. Gerade gesehen. Das ist ein folgefehler. Zeile 28 ist falsch. Und bitte benutz das von mir gezeigte Muster mit main-Funktion und if __main__ Guard. Sonst leidet dein Programm an globalen Variablen, und die sind fies.

  • geht


  • Quote

    Und bitte benutz das von mir gezeigte Muster mit main-Funktion und if __main__ Guard. Sonst leidet dein Programm an globalen Variablen, und die sind fies.

    ok "main" mache ich und " if__main__Guard" muss ich dann aber erstmal nachlesen.

  • Das habe ich exemplarisch schon vorgemacht.

  • Das war in dem Thema wie man das Objekt pi übergibt.

  • Ja, aber es fehlt tatsächlich was.



    Code
    if __name__ == "__main__":
        main()
  • Ich wuerde vor allem erstmal in Frage stellen, warum es Python sein soll. Gerade auf dem so kleinen und langsamen Zero wird das die Leistung des Systems negativ beeinflussen. Ich bin ja ein grosser Freund von Python, aber meinen Roboter programmiere ich gerade in Rust, oder C++.

    Hallo,

    die Klasse habe ich jetzt auch mal in C++ geschrieben und erfolgreich eingesetzt. Dabei habe ich gemerkt, dass ich mit C++ doch mehr Spass habe. Also demnächst werde ich dann unter C++ hier schreiben. Danke aber für die Unterstützung mit Python.