Servo Steuerung für 5 Servos

Der nächste Schritt wäre dann, statt der orginal Arduino servolibrary die von Steffen hier gepostete im Arduino-Programm auszutauschen, ist erstmal nahezu gleich, damit kann man dann zusätzlich auch Geschwindigkeiten recht einfach vorgeben, damit es nicht so nach Roboter aussieht.

Bewegungsablauf: Kopf heben und senken, Kopf rechts links, linker Arm heben und senken und Rechter Arm ausstrecken.
Das wären doch aber vier Servos ?
1) Kopf heben und senken
2) Kopf rechts links
3) linker Arm heben und senken
4) Rechter Arm ausstrecken (:eek:)
 
Upps😉
es sind nur doch nur 4 Servos👍
 
Hallo Holger,
Dankeschön für die Info.

Ich habe eine Anfrage gesendet für zwei Module.
Mal sehen ob es die noch gibt, ist auf jedenfall eine einfache und saubere Lösung,

Grüße
Michael
 
Hi,
den Anbieter rcelec.de/doku.php?id=rc:sq:sq1 gibt es nicht mehr.

Macht aber nichts, ich habe jetzt drei mal das Board AZDelivery Nano V3.0 CH340 V3.0 und ein Display AZDelivery 128 x 64 Pixel 0,96 Zoll OLED I2C .
Super klein die Teile, die bekomme ich in meinem Cockpit gut verbaut und versteckt.

Mal sehen ob ich dieses Wochende mal ein Test schaffe.

Leider sind meine Piloten auch noch nicht fertig.

Grüße
Michael
 
Hallo Holger,
ich habe Dein Code oben mal übernommen und der funktioniert auch schon mal.

Jetzt laufen alle Servos gleich an und schnell, Winkel und Pausenzeit ist mir klar ersichtlich.

Wie kann ich jetzt Zeiten einfügen, damit die Servos ein unterschiedlichen Ablauf haben.

ZB.:

Kopf langsam heben und senken, in der Mitte 1 sec stehen bleiben, dann langsam rechts 1 sec warten und schnell nach links. Das in unterschiedlichen Abständen wiederholen.

Dann alle 4sec den Arn langsam heben, 2sec warten und wieder senken. Das alle 5 sec wiederholen.

Den zweiten Arm langsam von rechts nach lenks schwenken, 2sec Pause und wiederholen

Aber nicht alle Abläufe Synchron, mal ein Zeitversatz würde originaler aussehen.



So langsam werde ich warm mit der Programmierung, die Ablaäufe habe ich verstanden.
Im Prinzip fehlt mir nur noch die Geschwindigkeit der Servos, was für ein Befehl muß ich dafür eingeben?
Und wie oder wo kann ich ein Empfänger Signal anschließen und aktivieren, um den Ablauf zu starten?




Noch mal als Info zu den Funktionen:

Kopf: links und recht.
Kopf: hoch und runter
Linker Arm: schwenken.
Rechter Arm: heben und senken

Vielen Dank für Deine Zeit und weitere Infos

Grüße
Michael
 
Hallo Michael

Die einfachste Variante ist die ServoLibrary der der Steffen hier verlinkt hat https://github.com/netlabtoolkit/VarSpeedServo
Ich habe sie selber nie benutzt. Die Anleitung ist dort auf der Seite, aber in Englisch.
Zip auf die Festplatte runterladen (oben rechts das grüne "clone or downlaod"
Dann Im Arduino, Sketch > Bibliothek einbinden > Zip Bibliothek hinzufügen > auswählen und Abflug.

An sich sollte dann oben nur statt:

Servo Servo_Kopf; //Wir vergeben Namen für die Servos
Servo Servo_Arm_links; //Wir vergeben Namen für die Servos
u.s.w.

Dann in

VarSpeedServo Servo_Kopf; //Wir vergeben Namen für die Servos
VarSpeedServo Servo_Arm_links; //Wir vergeben Namen für die Servos
u.s.w.

geändert werden, dann müsste es schon funzen.

in der Loop dann statt
Servo_Kopf.write(90); //Servo_Kopf fährt auf 90°
Servo_Arm_links.write(100); //Servo_Arm_links fährt auf 100°
us.w.

hinter der GRadzahl mit komma den Speed:

Servo_Kopf.write(90, 90); //Servo_Kopf fährt auf 90°
Servo_Arm_links.write(100, 120); //Servo_Arm_links fährt auf 100°


wenn ich das dort richtig verstanden habe ;)


Zum Empfänger, nur an aus, oder verschiedene (mehrerererere Abläufe?)

Die einfachste Variante (das "pulsln" bitte nur für nicht zeitkritische Sachen verwenden)
Empfängerpin ist D2, 1500 ist der Wert in uS für die Mittelstellung des Senderkanals, der geht normal von 1100-1900uS
Dazu müssen wir das Programm "verschachteln" und es in verschiedenen Unterprogramme/Schleifen aufteilen.

Code:
void loop(){                // hier beginnt die Endlosschleife 

// Wir fragen den Sender ab:
   if ((pulseIn(2, HIGH, 40000))<1500) //Ist Schalter auf Pos 1 ?
   {         
                     //dann mache das was hier in dieser Schleife steht                                    
   }

   else  //ansonsten (Schalter ist nicht auf Pos 1)
   {   
                   //mache das was hier in dieser Schleife steht                  
   }

}  //void loop zuende und wieder zurück zum Anfang von void loop
 
Dankeschön Holger,

das teste ich erst mal so.

Die Ansteurung durch den Empfänger wäre so wünschenswert:

Als Beispiel!
Schalterstellung Mitte: Nichts aktiv.
Impuls plus: Köpf bewegen
Negativ: Alles bewegen

Grüße
Michael
 
Besser ist es aber dann den Wert in eine Variable zu speichern wenn man den mehr als einmal braucht, dann musst Du weniger den Sender abfragen.
die Enden sind 1100 und 1900
Dann wäre unter 1300 Endstellung 1, über 1700 Endstellung 2, und die Mittelstellung dazwischen.

Habe das Programm nicht getestet, sollte aber funzen.

Soll in der Mittelstellung auch ein Programm laufen? (z.B. auf Ausgang zurück) Dann muss es doppelt verschachtelt werden, oder im Anschluss immer ausgeführt werden (unter den if Abfragen).
Edit, In Idee ohne doppelte Verschachtelung geändert
Code:
void loop(){                // hier beginnt die Endlosschleife
   
   int RC = pulseIn(2, HIGH, 40000); //Sender auslesen und Wert in Variable RC speichern


   if (RC < 1300) //Endstellung 1
   {
    // tue das was in dieser Schleife steht. 
   }
   
   
   if (RC > 1700)  //Endstellung 2
   {
    // tue das was in dieser Schleife steht. 
   }

      
   if (RC > 1300 && RC <1700 )  //Mittelstellung
   {
    // tue das was in dieser Schleife steht. 
   }

   // Alles was hier steht wird im Anschluss immer unabhängig vom Sender ausgeführt.

}  //void loop zuende und wieder zurück zum Anfang von void loop

Info, eigentlich müsste es für die Mitte >1299 und <1701 sein, damit die Zahlen 1300 und 1700 nicht ignoriert werden, aber lassen wir erst mal diese Verwirrung außen vor ;)
 
Dankeschön Holger,

wenn ich Glück habe, sind kommende Woche die Piloten fertig, dann gebe ich vollgas und werde gleich berichten ( mit Video) ob alles läuft.

Grüße
Michael
 
Endlich fertig

Endlich fertig

Sooo,
nach einigen Rückschlägen sind die Piloten fast fertig.

eider mußte ich mir noch mal neue Controller bestellen, die Polou Maestro sind es jetzt und ich bin super zufrieden.
Die Programmierung geht sehr einfach und schnell von der Hand.
Hier jetzt mal zwei Videos:
Einmal in 1/4 mit 4 Kanälen und 1/6 mit 5 Kanal für zwei Piloten.

Nochmal vielen Dank und Grüße
Michaelhttps://youtu.be/MaHwd6yHUzM


https://youtu.be/R_a-C39A2D4
 
Ansicht hell / dunkel umschalten
Oben Unten