5 Servos ansteuern

Hey :smiley:
Ich bin's mal wieder und habe eine neue Frage wie kann ich 5 servos ansteurn sodass sie alle synchron auf einen bestimmten Winkel fahren sorry das ich im Code keine kommentare habe!

Danke für eure Antworten

Ich hoffe ihr könnt mir sagen was ich im Code falsch habe Danke!!

#include <Servo.h>

int allefinger;
 allefinger = finger1,finger2,finger3,finger4,finger5
Servo finger1;
Servo finger2;
Servo finger3;
Servo finger4;
Servo finger5;

void setup() {

  finger1.attach(9);
  finger2.attach(5);
  finger3.attach(10);
  finger4.attach(6);
  finger5.attach(3);

}

void loop() {
  
  allefinger.write(150);
  delay(5000);
  allefinger.write(10);
  delay(5000);

Was soll denn das? :slight_smile:

int allefinger;
 allefinger = finger1,finger2,finger3,finger4,finger5

Das gibt zurecht eine Fehlermeldung beim kompilieren.

Wenn du willst, kannst du das mit einer Funktion lösen - etwa so:

#include <Servo.h>

// int allefinger;
// allefinger = finger1, finger2, finger3, finger4, finger5
Servo finger1;
Servo finger2;
Servo finger3;
Servo finger4;
Servo finger5;

void allefinger(int grad) {
  finger1.write(grad);
  finger2.write(grad);
  finger3.write(grad);
  finger4.write(grad);
  finger5.write(grad);
}

void setup() {
  finger1.attach(9);
  finger2.attach(5);
  finger3.attach(10);
  finger4.attach(6);
  finger5.attach(3);
}

void loop() {
  allefinger(150);
  delay(5000);
  allefinger(10);
  delay(5000);
}

Wahrscheindlich macht das eher, was du willst.

Aber sehr elegant ist das nicht: finger1, finger2 etc. :slight_smile:

Der Impulseingang eines Servos ist hochohmig genug.
Die kannst du alle parallel schalten.
Alle 5 Plus zusammen, alle 5 GND zusammen.
Alle Impulseingänge zusammen.

Und schwubst, laufen die synchron, da brauchste gar nix programmieren.

Das gibt zurecht eine Fehlermeldung beim kompilieren.

Ja: Es fehlt das ; nach finger5
8)
Und der Datentyp int ist falsch.
Und die finger1 ... finger5 werden erst später definiert.
Und wenn du etwas mit jedem Element einer Kollektion machen willst, musst du dich leider an eine der dafür vorgesehenen Schreibweisen halten.

Wie schon gesagt wurde: allefinger macht Probleme. Wenn du alle Servos zusammenfassen willst, dann musst du ein Array benutzen, und im Optimalfall sogar eine Klasse:

#include <Servo.h>
class Hand{
  public:
  Servo finger[5];
  Hand(int pin1, int pin2, int pin3, int pin4, int pin5){
    finger[0].attach(pin1);
    finger[1].attach(pin2);
    finger[2].attach(pin3);
    finger[3].attach(pin4);
    finger[4].attach(pin5);
  }
  void alleSetzen(int grad){
    for(int i = 0;i < 5;i++){
      finger[i].write(grad);
    }
  }
};
Hand hand(9, 5, 10, 6, 3);

Hi

Wird der Thread ähnlich informativ von Deiner Seite aus, wie 'der Andere'?
Da es hier erneut um 5 Servos geht, wird das alte Problem wohl nicht mehr aktuell sein - vll. kommt ja wenigstens hier noch Mal ein Lebenszeichen, gar Antworten auf Fragen oder, wenn ich was Wünschen darf, ein Endprodukt wieder zurück ins Forum?

MfG