RE: Servos schalten mit MobaTools

#1 von Sydiusch , 14.03.2020 17:47

Hallo zusammen,

habe seit kurzem die Servosteuerung der Weichen ( Märklin C Gleis ) ausprobiert und muss sagen es läuft wirklich ganz gut.
Auf dem "geschmack" gekommen wollte ich jetzt mehrere Weichen umbauen doch leider habe ich ein Problem.
Die Weiche an Pin. 9 lässt sich schalten die beiden anderen machen keinen Mux …?
Anbei mein Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 
// Die Taster müssen so angeschlossen sein, dass der Eingang bei gedrücktem
// Taster auf LOW (=0) geht.
const int tasterPin1 = 2; //Taster1 Pin 2
const int tasterPin2 = 3; //Taster2 Pin 3
const int servoPin22 = 9; // Anschluß für den Servo1
const int tasterPin3 = 4; //Taster3 Pin 4
const int tasterPin4 = 5; //Taster4 Pin 5
const int servoPin23 = 8; // Anschluß für den Servo2
const int tasterPin5 = 6; //Taster5 Pin 6
const int tasterPin6 = 7; //Taster6 Pin 7
const int servoPin24 = 10; // Anschluß für den Servo3
// bei Werten, die sich im Programm nie verändern, sollte immer 'const' vorangestellt
// werden
 

int tasterStatus1, tasterStatus2, tasterStatus3, tasterStatus4, tasterStatus5, tasterStatus6;
MoToServo meinServo1, meinServo2, meinServo3;
 
void setup() {
pinMode(tasterPin1, INPUT_PULLUP); // so ist kein externer pullup Widerstand am
pinMode(tasterPin2, INPUT_PULLUP); // Taster erforderlich
pinMode(tasterPin3, INPUT_PULLUP); // so ist kein externer pullup Widerstand am
pinMode(tasterPin4, INPUT_PULLUP); // Taster erforderlich
pinMode(tasterPin5, INPUT_PULLUP); // so ist kein externer pullup Widerstand am
pinMode(tasterPin6, INPUT_PULLUP); // Taster erforderlich

meinServo1.attach(servoPin22); //Servo an Pin 9
meinServo1.setSpeed( 48 ); // Verfahrgeschwindigkeit einstellen
meinServo2.attach(servoPin23); //Servo an Pin 8
meinServo2.setSpeed( 48 ); // Verfahrgeschwindigkeit einstellen
meinServo3.attach(servoPin24); //Servo an Pin 10
meinServo3.setSpeed( 48 ); // Verfahrgeschwindigkeit einstellen
}
 
void loop() {
tasterStatus1 = digitalRead(tasterPin1);
tasterStatus2 = digitalRead(tasterPin2);
tasterStatus3 = digitalRead(tasterPin3);
tasterStatus4 = digitalRead(tasterPin4);
tasterStatus5 = digitalRead(tasterPin5);
tasterStatus6 = digitalRead(tasterPin6);
 
if (tasterStatus1 == LOW && meinServo1.moving() == 0 ) {
meinServo1.write(50); //wird langsam drehen
delay(100);
}
 
if (tasterStatus2 == LOW && meinServo1.moving() == 0) {
meinServo1.write(112); //wird langsam drehen
delay(100);
}
 
if (tasterStatus3 == LOW && meinServo2.moving() == 0 ) {
meinServo2.write(50); //wird langsam drehen
delay(100);
}

if (tasterStatus4 == LOW && meinServo2.moving() == 0 ) {
meinServo2.write(50); //wird langsam drehen
delay(100);
}

if (tasterStatus5 == LOW && meinServo3.moving() == 0 ) {
meinServo3.write(50); //wird langsam drehen
delay(100);
}

if (tasterStatus6 == LOW && meinServo3.moving() == 0 ) {
meinServo3.write(50); //wird langsam drehen
delay(100);
}
delay(20);
 
}
 



Entweder übersehe ich was oder liege damit total Falsch.

Wie gesagt komisch ist, dass der am Pin9 geht.
Alle Taster sind ebenso gleich verschaltet.

Bin mir sicher, dass Ihr mir weitehelfen könnt.

Noch eine Frage am Rande …. in der Beschreibung der einzelnen Beispiele wird darauf hingewiesen, dass der Sketch Servo_01 und Servo_02 unterschiedlich sind …. Woran unterscheiden die sich ? Für mich sehen beide gleich aus.


Vielen Dank vorab .

SG
Chris


Sydiusch  
Sydiusch
Regionalbahn (RB)
Beiträge: 42
Registriert am: 03.11.2019


RE: Servos schalten mit MobaTools

#2 von Domapi , 14.03.2020 19:39

Wenn Du bei den Servo.write Befehlen unterschiedliche Werte verwendest und nicht für beide Taster den Wert 50, sollte es funktionieren.


Viele Grüße
Martin

- Mein Trennungsbahnhof: viewtopic.php?f=64&t=152275
- Drehscheibensteuerung auf Arduinobasis "LocoTurn": https://wiki.mobaledlib.de/anleitungen/b...v10/150_inhalte


 
Domapi
CityNightLine (CNL)
Beiträge: 1.620
Registriert am: 22.09.2015
Ort: Nämberch
Gleise Ohne Pickel
Spurweite H0
Steuerung Mit Hirn und Verstand
Stromart DC, Digital


RE: Servos schalten mit MobaTools

#3 von Sydiusch , 14.03.2020 20:01

Hallo,

nur so mal einfach zum Verständnis warum muss ich die Positionen der Servos unterschiedlich vergeben ?
Dies ist hier nicht der Fall aber was wenn ich exact die gleiche Position mit meinem Servo 1 und Servo2 anfahren will?

Doch ich werde es Testen
Danke erstmal

SG
Chris


Sydiusch  
Sydiusch
Regionalbahn (RB)
Beiträge: 42
Registriert am: 03.11.2019


RE: Servos schalten mit MobaTools

#4 von Domapi , 14.03.2020 20:59

Jeder Servo hat in dem Sketch 2 Positionen, die er anfahren soll.
Servo 1 z.B. 50 und 112. Je nachdem, welcher Taster gedrückt wird.

Servo 2 und 3 haben jeweils identische Positionen (50 / 50). Was soll da also hin- und herfahren???


Viele Grüße
Martin

- Mein Trennungsbahnhof: viewtopic.php?f=64&t=152275
- Drehscheibensteuerung auf Arduinobasis "LocoTurn": https://wiki.mobaledlib.de/anleitungen/b...v10/150_inhalte


 
Domapi
CityNightLine (CNL)
Beiträge: 1.620
Registriert am: 22.09.2015
Ort: Nämberch
Gleise Ohne Pickel
Spurweite H0
Steuerung Mit Hirn und Verstand
Stromart DC, Digital


RE: Servos schalten mit MobaTools

#5 von Sydiusch , 15.03.2020 11:27

Hi Martin,


Asche über mein Haupt
Klar hast Du Recht... ich habe es wirklich nicht gesehen. Und ich dachte Du meinst ich soll bei allen Servos unterschiedliche Werte eintragen Quasi so
50-120 --- 49-121 usw... bis ich hingeschaut habe . Na ja Man/n wird Älter

Danke, war natürlich die Ursache , jetzt geht es perfekt.

SG
Chris


Sydiusch  
Sydiusch
Regionalbahn (RB)
Beiträge: 42
Registriert am: 03.11.2019


RE: Servos schalten mit MobaTools

#6 von Domapi , 15.03.2020 15:51

So ist das halt beim Programmieren: Manchmal sieht man den Wald vor lauter Bäumen nicht mehr

Da hilft dann nur ein unvoreingenommener Sparringspartner.


Viele Grüße
Martin

- Mein Trennungsbahnhof: viewtopic.php?f=64&t=152275
- Drehscheibensteuerung auf Arduinobasis "LocoTurn": https://wiki.mobaledlib.de/anleitungen/b...v10/150_inhalte


 
Domapi
CityNightLine (CNL)
Beiträge: 1.620
Registriert am: 22.09.2015
Ort: Nämberch
Gleise Ohne Pickel
Spurweite H0
Steuerung Mit Hirn und Verstand
Stromart DC, Digital


RE: Servos schalten mit MobaTools

#7 von MicroBahner , 15.03.2020 22:27

Hallo Chris,

Zitat

Noch eine Frage am Rande …. in der Beschreibung der einzelnen Beispiele wird darauf hingewiesen, dass der Sketch Servo_01 und Servo_02 unterschiedlich sind …. Woran unterscheiden die sich ? Für mich sehen beide gleich aus.

Der Unterschied liegt in der Abfrage der Taster. Bei Servo_01 ist das unabhängvom der Servo-Bewegung:

1
2
 
    if (tasterStatus1 == LOW) {
 
 

bei Servo_02 wird da auch abgefragt, ob sich das Servo bewegt:

1
2
 
    if (tasterStatus1 == LOW && meinServo.moving() == 0 ) {
 
 

Der Effekt ist, dass Du im 1. Fall das Servo jederzeit umsteuern kannst, auch wenn es die Endlage noch nicht erreicht hat. Im 2. Fall ist der Taster nur aktiv, wenn das Servo stillsteht. Du kannst es also nicht während der Bewegung umsteuern.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


   


  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz