Je nach Doku benötigen Servos Impulslängen zwischen ca. 0,5 und 2,5ms. Wenn du den Wert beim Aufruf der sleep()-Funktion änderst sollte das Servo eine andere Position anfahren (z.B. sleep(20);). Servopositionen nahe oder gar auf dem Endpunkt sind kritisch.Der Servo wird bis zum Anschlag gedreht und hält seine Position dort.
Sind auch wirklich alle GNDs (von Base, m32 und Servo) miteinander verbunden? Die Spannungsversorgung für das Servo sollte vom Base oder einem externen Akkupack kommen, weil inzwischen mehrfach darüber berichtet wurde, dass Servos direkt am m32 nicht funktionieren.Habs auf der Base gemach mit ADC0 ... Kannst du mir eventuell sagen was beim Ansatz von Dirk dann nicht stimmt?
Die Servoansteuerung von Dirk erzeugt die Impulslängen in zwei Schritten. Zuerst wird die Länge des kürzesten Impuls definiert (Anschlag eine Seite) und zu diesem wird die dem gewünschten Drehwinkel entsprechende Impulsdauer hinzuaddiert (bis maximal Anschlag andere Seite). Kritisch ist hierbei die Streuung der Servos (Hersteller, Model, ...) bezüglich der Impulslängen für die Endanschlagpositionen. Wenn der kürzeste Impuls nicht genau stimmt verfälschen sich auch alle anderen Positionen. Das kann sogar dazu führen, dass die verwendeten Impulslängen Positionen außerhalb des Drehbereichs anwählen! Allererster Schritt aller Servoansteuerungen sollte deshalb die Ermittlung der für die Endpositionen nötigen Impulslängen sein.
Da die ServoLib über das Tasksystem eingebunden wird, sollten im Programm keine blockierenden Funktionen verwendet werden. Da ich immer nur meine eigenen Ansteuerungen verwende kann ich zur Servolib sonst nicht viel mehr sagen.
Vielleicht noch zwei allgemeine Hinweise: Nach dem Editieren immer Speichern vor dem Kompilieren und nach Änderungen in der ServoLib immer ein Clean/Make all ausführen.
Beispiele für mehrere Servopositionen mit sleep():
https://www.roboternetz.de/community...l=1#post484891
https://www.roboternetz.de/community...l=1#post507080
https://www.roboternetz.de/community...l=1#post420023
Lesezeichen