Servo-Pendelbewegung mit class
-
bug-reporter -
6. Mai 2020 um 08:07 -
Erledigt
L
I
V
E
Stammtisch ab 20:30 Uhr im Chat
-
-
Servo-Pendelbewegung mit class? Schau mal ob du hier fündig wirst!
-
Vielen Dank,
ist schon eine große Hilfe hier das Forum.
-
Hallo,
bräuchte wieder Unterstützung
Python
Alles anzeigen#!/usr/bin/python3 #Servo von rechts nach links und zurueck pendeln lassen import pigpio import sys import time class servo: def __init__(self,pi,pin): #BCM self.pi = pi self.spin = pin self.steps = (1300, 1400, 1500, 1600, 1800, 1600,1500,1400) #oder cycle / itertools self.spos = 2 self.pi.set_mode(self.spin, pigpio.OUTPUT) # fehler 2 self.pi.set_servo_pulsewidth(self.spin,self.steps[self.spos]) def move_servo(self): time.sleep(0.3) self.spos += 1 if self.spos == 8: self.spos = 0 print("Pos:" ,self.spos) self.pi.set_servo_pulsewidth(self.spin,self.steps[self.spos]) def move_stop(self): print("gestoppt") self.pi.set_servo_pulsewidth(self.spin,0) self.pi.stop() pi = pigpio.pi s1 = servo(pi,17) # fehler 1 while True: s1.move_servo() wjn = input("weiter mit j") if wjn != "j": break s1.move_stop()
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
Python
Alles anzeigen#!/usr/bin/python3 #Servo von rechts nach links und zurueck pendeln lassen import pigpio import sys import time class Servo: def __init__(self,pi,pin): #BCM self.spi = pi self.spin = pin self.steps = (1300, 1400, 1500, 1600, 1800, 1600,1500,1400) #oder cycle / itertools self.spos = 2 self.spi.set_mode(self.spin, pigpio.OUTPUT) self.spi.set_servo_pulsewidth(self.spin,self.steps[self.spos]) def move_servo(self): time.sleep(0.3) self.spos += 1 if self.spos == 8: self.spos = 0 print("Pos:" ,self.spos) self.spi.set_servo_pulsewidth(self.spin,self.steps[self.spos]) def move_stop(self): print("gestoppt") self.spi.set_servo_pulsewidth(self.spin,0) self.spi.stop() pi = pigpio.pi() s1 = Servo(pi,17) while True: s1.move_servo() wjn = input("weiter mit j") if wjn != "j": break s1.move_stop()
-
Supi!!!
war die Klammer in Zeile 28.
Viiiiielen Dank!!!!
-
Zitat
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 habe ich exemplarisch schon vorgemacht.
Habe jetzt nochmal zurück geblättert und gesurft aber finde diesbezgl. keine Stelle wo ich ansetzen könnte. Auch nicht in meinen Python-Büchern
-
Das war in dem Thema wie man das Objekt pi übergibt.
-
in #21 ?
-
-
Ok, danke!!
-
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.
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!