Go Down

Topic: Servosteuerung (Read 159 times) previous topic - next topic

CptTom

Hallo Leute,
ich bin auch ein blutiger Anfänger und habe gleich meine erste Frage......!!!
Ich sage Euch erstmal was ich denn überhaupt vorhabe so das Ihr eine kleine Vorstellung bekommt was mir so im Hirn herumschwebt  :)  :)

Ich bin Schiffsmodelbauer und möchte gerne auf einem Kriegsschiff alle 4 Geschütztürme mit einem Kontroller ansteuern.

Erste Frage.....kann ich zwei Servos an einen Steuerpin legen so das alle beide das gleiche gleichzeitig machen???
Mein Versuchsaufbau ist der....Ein Jumperkabel vom Servo an 5v, eins an Ground und eins ist an Pin 9
Das funktioniert auch soweit

Jetzt die zweite Frage kann ich einen Loop für eine bestimmte Zeit unterbrechen, damit meine ich das sich zwei Türme drehen (0°-90° und dann für vielleicht 30sek stehen bleiben und zum Schluß wieder zurück 90°-0°) drehen

Bei mir dreht sich der Turm einmal hin und dann gleich wieder zurück

Oder gibt es vielleicht eine andere Steuerung mit der so etwas besser funktionieren würde????

Ich danke Euch schon einmal im voraus  :)  :)

Grüße vom Tom

HotSystems

Hallo Leute,
ich bin auch ein blutiger Anfänger und habe gleich meine erste Frage......!!!
Ich sage Euch erstmal was ich denn überhaupt vorhabe so das Ihr eine kleine Vorstellung bekommt was mir so im Hirn herumschwebt  :)  :)

Ich bin Schiffsmodelbauer und möchte gerne auf einem Kriegsschiff alle 4 Geschütztürme mit einem Kontroller ansteuern.

Erste Frage.....kann ich zwei Servos an einen Steuerpin legen so das alle beide das gleiche gleichzeitig machen???
Mein Versuchsaufbau ist der....Ein Jumperkabel vom Servo an 5v, eins an Ground und eins ist an Pin 9
Das funktioniert auch soweit
Da sehe ich den Sinn nicht.
Du kannst mit einer Routine 2 Pins steuern.

Quote
Jetzt die zweite Frage kann ich einen Loop für eine bestimmte Zeit unterbrechen, damit meine ich das sich zwei Türme drehen (0°-90° und dann für vielleicht 30sek stehen bleiben und zum Schluß wieder zurück 90°-0°) drehen

Bei mir dreht sich der Turm einmal hin und dann gleich wieder zurück

Oder gibt es vielleicht eine andere Steuerung mit der so etwas besser funktionieren würde????
Die Loop kannst du und darfst du nicht unterbrechen.
Du kannst aber die Programmierung so ausführen, das der Sketch und die Servos es so ausführen, wie du es möchtest.
I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Klaus_ww

Als ehemaliger Modellflieger: natürlich kannst Du 2 Servos über 1 Pin steuern. Ob die dann das machen was Du möchtest ist ein anderes Thema  :smiley-wink:

Kleiner Hinweis: Servos nicht über die Stromversorgung des arduino betreiben, das geht in die Hose.

Und natürlich kannst Du Bewegungsmuster beliebig programmieren, dazu sind diese famosen µControler ja mal ausgebrütet worden.

Empfehlung: schau Dir die Beispiele in der IDe an, da gibt's auch was für Servos.
Wenn ich hier sehr knapp antworte dann wegen der elenden Tipperei auf dem Tablet.

Klaus_ww

Ach, und wir freuen uns natürlich über Bildchen vom Schiff und wenn's dann dreht wie gewünscht.
Wenn ich hier sehr knapp antworte dann wegen der elenden Tipperei auf dem Tablet.

CptTom

Danke Dir für Deine Antwort :) :)

Da sehe ich den Sinn nicht.
Du kannst mit einer Routine 2 Pins steuern.
damit wäre ja schon meine erste frage beantwortet...zwei Steuerpins und beide Servos fangen sich gleichzeitig an zu drehen und zu stoppen :) :)


Quote
Die Loop kannst du und darfst du nicht unterbrechen.
Du kannst aber die Programmierung so ausführen, das der Sketch und die Servos es so ausführen, wie du es möchtest.

Hmmmm hättest Du da vielleicht ein Beispiel...die Delayfunktion in der Programmierung ändert nur die Geschwindigkeit des Servos aber nicht das stoppen....oder unterbrechen

MicroBahner

#5
Aug 13, 2017, 05:18 pm Last Edit: Aug 13, 2017, 05:18 pm by MicroBahner
Hallo Tom,
iBei mir dreht sich der Turm einmal hin und dann gleich wieder zurück
Zeigst Du uns auch mal deinen Sketch, oder ist der geheim? Dann kann man dir gebenenfalls auch sagen, was Du besser machen kannst um dein Ziel zu erreichen.
Gruß, Franz-Peter

Klaus_ww

Sketch zeigen! Und in Code-Tags packen (oben links das Symbol)
Wenn ich hier sehr knapp antworte dann wegen der elenden Tipperei auf dem Tablet.

HotSystems

#7
Aug 13, 2017, 05:22 pm Last Edit: Aug 13, 2017, 05:23 pm by HotSystems
Hmmmm hättest Du da vielleicht ein Beispiel...die Delayfunktion in der Programmierung ändert nur die Geschwindigkeit des Servos aber nicht das stoppen....oder unterbrechen
Wenn du es entsprechend eines der zahlreichen Beispielen aufbaust, bleibt der Servo auch an der Position stehen, die du vorgibst.

Bei erneuter Steuerung dreht er entsprechend weiter oder zurück oder....oder....

Ja Sketch zeigen, wurde schon geschrieben.

Den bitte in Code-Tags, mit der Schaltfläche </> oben links im Editorfenster.

Edit:

Naja, aller guten Dinge sind drei. ;) ;)
I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

CptTom

Danke Dir Klaus und natürlich gibt es Bilder.....wenn er denn mal das macht was ich mir vorstelle :) :)

lol...ich kann nur alle 5 minuten etwas posten

Klaus_ww

Quote
ich kann nur alle 5 minuten etwas posten
Gilt für alle Neulinge hier, ändert sich bald.
Wenn ich hier sehr knapp antworte dann wegen der elenden Tipperei auf dem Tablet.

CptTom

Ok hier ist der Sketch, das ist der der im Beispiel unter "Servos" angegeben ist.
Den habe ich schon ein bisschen verändert (Delay ist im Beispiel 15) und ich habe die Gradzahl verändert

Bin halt ein bisschen am rumspielen :) :) komischerweise ändert die "Delayangabe" nur die Geschwindigkeit....ist das richtig so????

Code: [Select]
#include <Servo.h>

Servo myservo;  

int pos = 0;    

void setup() {
  myservo.attach(9);  
}

void loop() {
  for (pos = 0; pos <= 90; pos += 1) {
    
    myservo.write(pos);              
    delay(60);
  }
  
  for (pos = 90; pos >= 0; pos -= 1) {
    myservo.write(pos);              
    delay(60);                      
  }
}

MicroBahner

#11
Aug 13, 2017, 05:39 pm Last Edit: Aug 13, 2017, 05:46 pm by MicroBahner
komischerweise ändert die "Delayangabe" nur die Geschwindigkeit....ist das richtig so????
ja, das ist richtig so. Die in der IDE integrierte Servo-Lib kann das Servo nicht langsam bewegen. Wenn Du da ein write(pos) machst, bewegt es sich mit maximaler Geschwindigkeit dorthin. Wenn es langsam gehen soll musst Du also viele Zwischenschritte einfügen und dann immer ein bisschen warten bis es zum nächsten Schritt geht. Das macht die for-Schleife mit den delay(). Und wenn Du bei jedem Schritt etwas länger wartest, bewegt sich das Servo halt langsamer.
Möchtest Du nach der Bewegung etwas warten, musst Du ein delay() zwischen die for-Schleifen einfügen.

Zum Probieren kannst Du das jetzt erstmal so machen. Insgesamt ist das aber für dein Projekt letztendlich nicht zielführend. Du solltest eine Lib verwenden, die das langsame Bewegen bereits selbst erledigt. Ich habe für meine Modellbahnkollegen mal eine Lib geschrieben, die das kann. Es gibt aber noch einige andere, die auch weiter verbreitet sind.
Und dann kannst Du daran gehen, ganz ohne delay() zuprogrammieren  ;)
Gruß, Franz-Peter

CptTom

#12
Aug 13, 2017, 05:59 pm Last Edit: Aug 13, 2017, 06:05 pm by CptTom
Wow....cooool und vielen Dank an Euch (Franz-Peter für den link)...ich bin mir jetzt sicher das ich mit viiiieeellll rumspielen und Eurer Hilfe dann endlich zum Ergebnis komme.

Muss jetzt leider aufhören (wie bekommen Besuch) aber ich melde mich Morgen wieder

Danke Euch :) :) :)

Go Up