Hallo

(count>vli)?vli_off:vli_on;
bedeutet if(count>vli) vli_off; else vli_on; Es wird vom Kompiler aber zum selben Code übersetzt.

Count wird in der ISR von 0 bis 1999 hochgezählt, das ergibt den 20ms-Intervall. Solange der Positionswert des Servos kleiner als count ist wird der Impuls ausgegeben, bei Position==100 sind das 1ms. (Wenn man den 20ms-Intervall verkürzt, werden die Servos "agressiver", verlängern macht sie träge)

Und ist das mit dem delay eine blockierende Funktion?
Ja. Anstelle der delays kannst du aber auch Berechnungen machen. Ich schreibe die Abläufe erst mit langen delays und kürze dann die Verzögerungen bis es "flüssig" aussieht. (Durch Änderungen innerhalb der delay()-Funktion kann man ALLE Bewegungen beeinflussen!)

Wie lange blockiert delay() die schleife?
Da es eine Zählschleife ist hängt das von der Taktgeschwindigkeit des Kontrollers ab.

Und wann wird ISR aufgerufen?
Alle 10 us, dann ergeben 100 Aufrufe 1ms, das sollte Servo-Mitte sein.

Meine "Beine" haben je zwei Servos, in den defines sind die Pins nach dem Schema vorne-links-innen, vorne-links-aussen, vorne-rechts-innen, vorne-rechts-aussen.... definiert. Bei 6 Beinen würde sich eine Erweiterung mit mitte-links-innen, mitte-links-aussen... anbieten.

Das sind auch meine ersten Gehversuche. Ich definiere feste Abläufe für die Schritte und rufe diese dann nacheinander ab. Z.B. für ein einzelnes Bein: vla anheben, vli nach vorne schwenken, vla absenken. Für zwei Beine gleichzeitig: vla+hra anheben, schwenken, absenken... Dabei gebe ich immer die Zielpositionen der Servos an und warte kurz bis sie die Position erreicht haben. Bei zwei gleichzeitig bewegten Beinen starte ich das Zweite etwas verzögert wegen den Stromspitzen. Während zwei Beine vorgesetzt werden, schwenken die anderen vier ein Stück nach hinten. btw sollten die Servos eine eigene Stromversorgung haben!

Ich werde mir übrigends auch noch zwei weitere Beine basteln, denn mit vier Beinen mit je zwei Bewegungsebenen fällt er um...

Gruß

mic

[Edit]
Ich habe erst jetzt gelesen dass du vier Beine mit je drei Gelenken gebaut hast. Ich glaube, der RP6 kann mit vier Beinen nicht gehen weil er ein relativ hohes Gewicht hat und sein Schwerpunkt beim Anheben eines Beines ja über den anderen Beinen, die dann alles tragen müssen, sein muss damit er nicht umfällt. Meine Beschreibungen oben bezogen sich auf sechs Beine, sorry.