====== pyProgrammGenerator - Servo Animation ====== Der Servo-Animations Assistent ermöglicht die einfache Erstellung von komplexen Servo Animationen. Er ist Teil des pyProgrammGenerators. Die Servo Animation arbietet am besten mit den Direct Mode Servos von Eckhard (Platine 511) zusammen, funktioniert aber auch mit den bisherigen Servos (Platine 510). Details zu den Direct Mode Servos ist hier zu finden: [[anleitungen:spezial:pyprogramgenerator:Direct-Mode-Servo|Direct-Mode-Servo]] ==== Auswahl der Servo Animation ==== Die Assistenten werden genauso wie ein Macro, z.B. der HausMacro, im Macro Dialog ausgewählt: {{:bilder:anleitungen:pymll06.jpg?400|}} ==== Servo Animation ==== Nach Auswahl des Macros Servo Animation erscheint folgendes Fenster: {{:bilder:anleitungen:pymll07.jpg?400|}} Links sind die Eingabefelder zum Definieren von einfachen Bewegungskurven. Rechts wird die erstellte Kurve grafisch dargestellt nachdem man auf den Button "Update Grafik" geklickt hat. Der Assistent unterstützt den Direkt Mode Servo von Eckhart (Servo DM) und die normalen MLL-Servos (Servo1, Servo2 und Servo3) Durch Eingabe der **Ein- und Ausschaltparameter** wird der Zeitablauf bestimmt. Es stehen 3 Kurven-Modi zur Verfügung: **Linear**, **Beschleunigung** und **Individuell**. Die berechneten Kurven werden in der Grafik rechts angezeigt. **Achtung: Die Änderungen werden erst nach Betätigung des Tasters "Update Grafik" in die Grafik übernommen** Bei der Einstellung **Individuell** können die Kurvenwerte (Grüne Punkte) einzeln eingestellt werden. Wurde unter **Servo-Adresse** die Adresse des Servos angegeben, kann die Servostellung direkt überprüft werden. Beim **Ausführen** kann man wählen zwischen: * Wiederholen: die Ein-und Ausschaltsequenz wird automatisch wiederholt, * PingPong: die Sequenz wird vor- und zurück abgespielt, * Ein/Aus: Bei Schalter auf EIN wird die Einschaltsequenz, bei Schalter auf AUS, wird die Auschaltsequenz abgespielt. Ein Beispiel für eine **individuelle Sequenz** zeigt das folgende Bild. Die Sequenz simuliert einen umstürzenden Baum, der beim ersten Schlag sich etwas bewegt und dann mit einer Beschleunigungskurve umfällt, um dann noch mal kurz hoch zu springen. {{:bilder:anleitungen:pymll08.jpg?600|}} Das Ergebnis in der ProgrammGenerator Tabelle sieht dann so aus: {{:bilder:anleitungen:pymll09.jpg?600|}} === individuelle Sequenzen erstellen === Zum Erstellen von individuellen Sequenzen gibt es 2 Einstellungen: 1. individuelle Kurvenparameter Wenn der Kurvenparametertypauf "Individuell" gestellt wurde, kann man die Werte für jeden Kurvenpunkt mit der Maus ändern. Es ist nicht möglich, die Zeitpunkte zu ändern. {{:bilder:anleitungen:servofarbtestprogramm:pymll18.jpg?600|}} 2. Individuelle Zeitstufen Wenn der Zeitstufenparametertypauf "Individuell" gestellt wurde, kann man die Werte und die Zeitpunkte für jeden Kurvenpunkt mit der Maus ändern. Es ist auch möglich Punkte zu löschen und neue Punkte einzufügen (ab Version 5.3.1D) {{:bilder:anleitungen:servofarbtestprogramm:pymll19.jpg?600|}} === Bedienung der Kurvenverlaufgrafik === == Bewegung der Punkte: == Punkte können mit der Maus angeklickt und mit gedrückter linker Maustaste bewegt werden. Die aktuellen Werte für die Zeit und die Servostufe, werden unten links unter der Grafik angezeigt. Zusätzlich zur Maus können Punkte nachdem sie mit der Maus angeklickt wurden auch mit den Cursortasten bewegt werden. Für die Zeit ist das Raster auf 20ms gesetzt. == Punkte löschen, bzw neu erstellen == Nachdem ein Punkt mit der Maus angeklickt wurde, kann er mit der "Entf"-Taste gelöscht werden. Nachdem ein Punkt mit der Maus angeklickt wurde, kann er mit der "Einfg"-Taste ein neuer Punkt rechts von dem angeklickten Punkt erzeugt werden. Der neue Punkt wird in der Mitte zwischen dem angeklickten Punkt und dem nächsten Punkt erzeugt. == Zoom == Mit Ctrl-Mausrad und Ctrl-Pfeil-auf/ab kann in die Grafik gezoomt werden. Mit Shift-Linke-Maustaste und Shift-Pfeiltasten kann das Fenster verschoben werden. Durch klick auf "Update Grafik" wird der Zoom Faktor 100% wieder hergestellt. == Gesamtzeit ändern == Ist der Zeitstufenparametertyp auf "Individuell" eingestellt, kann die Gesamtzeit für die Einschalt- und die Ausschaltphase durch Ändern der Einschalt- bzw. Ausschaltparameter geändert werden. Maßgeblich ist jeweils die gesamte Zeit aus Startpause, Dauer und Endepause. Wird "Update Grafik" betätigt, werden alle Punkte entsprechend proportional an die neue Gesamtzeit angepasst. === Einige Tips === * Es empfiehlt sich mit einer linearen oder Beschleunigungskurve und einem festen Zeitraster zu starten und die Zeitparameter entsprechend zu setzen. * Erst wenn diese einfachen Kurven funktionieren, sollte man zu den individuellen Einstellungen gehen um die Bewegung zu optimieren und z.B. ein Nachwippen zu erzeugen. * Das Zeitraster nicht zu klein wählen. Jeder Kurvenpunkt kostet Speicher im ARDUINO und Zeit beim Erstellen des Programms. * Das Programm erzeugt einen Patternmacro. Dieser Macro enthält die Abstände zwischen den Zeitpunkte und alle Werte zu einem Zeitpunkt. Wenn alle Zeitpunkte denselben Abstand haben, wird nur ein Zeitwert benötigt. Alle folgenden haben dann denselben Abstand. Dadurch kann man die Anzahl der Zeitwerte reduzieren, in dem man am Ende möglichst viele gleiche Abstände zwischen den Zeitpunkten verwendet. === Bekannte Probleme === Beim Neustart des ARDUINO, z.B. beim Einschalten und nach Neuverbinden mit dem PC, wird die letzte Sequenz nochmal ausgeführt. Dies führt dazu, daß der Sero, wenn die letzte Sequenz z.B. Torschießen war, erst einmal das Tor mit voller Geschwindigkeit öffnet und dann entsprechend der Animation wieder schließt. Wir arbeiten daran, diesen Effekt zu verhindern. Deshalb vorsichtig sein mit empfindlichen Modellen. Außerdem ist es sinnvoll eine Federung zwischen Servo und Modell einzubauen, falls der Servo mal die programmierte Endlage überschreitet.