Guten Abend,
vorweg vielen Dank für Eure Antworten und das ihr mir helfen möchtet.
Ich glaube der Ablauf ist etwas missverständlich von mir beschrieben worden, ich versuche es etwas konkreter zu beschreiben:
Das Modell besteht aus einem großen Drehverbund an dessen Umfang zwanzig frei schwingende Gondeln aufgehängt sind. Mit zunehmender Drehgeschwindigkeit (Motor 1) desselben, soll ein zweiter Motor über eine Mechanik die Gondeln zum Ausschwingen bringen, da das über die beim Vorbild vorhandene Massenträgheit in Zusammenspiel mit der Fliehkraft im Modell nicht funktioniert.
Der zweite Motor muss nur ein kleines Stück drehen, bis der Hauptmotor (Motor 1) volle Geschwindigkeit erreicht hat, dann stoppt er. Wird nun der Hauptmotor bis zum Stillstand abgebremst, soll Motor 2 umgepolt wieder anfangen zu drehen, um die Gondeln in ihre Ausgangslage zurück zu bewegen. Wenn der Drehverbund (Motor 1) steht, soll Motor 2 ebenfalls zum Stillstand kommen.
Ausgelöst werden soll der ganze Ablauf entweder durch einen Kippschalter (Stellung 1= Start des Vorganges, Stellung 0= Anhalten), oder (falls besser realisierbar) durch einen Starttaster und einen Stopptaster.
Ich habe bisher versucht den Code schrittweise und erstmal für den Hauptmotor aufzubauen (deshalb habe ich Motor 2 erstmal "ausgeklammert". Da ich aber nicht genau weiß, wo der Schalter eingefügt werden muss und generell Zweifel habe, ob das so realisierbar ist, habe ich mich an das Forum gewandt.
Hier mal der bisherige Stand:
int dir_b=8;
int pwm_b=9;
int dir_a=2;
int pwm_a=3;
void setup(){
pinMode(pwm_a, OUTPUT); //Set control pins to be outputs
pinMode(pwm_b, OUTPUT);
pinMode(dir_a, OUTPUT);
pinMode(dir_b, OUTPUT);
}
void loop(){
{delay(100);
}
// Motor1 Beschleunigen
for (int i=0; i<256; i+=5){
// means the motor will turn right
digitalWrite(dir_b,LOW);
analogWrite(pwm_b,i); // speed counts from 0 to 255
delay(200);
}
// motor2 Beschleunigen
// for (int i=0; i<256; i+=5){
// LOW means the motor will turn right
// digitalWrite(motor2_A,LOW);
// analogWrite(motor2_Speed,i); // speed counts from 0 to 255
// delay(200);
// }
// Motor1 Abbremsen
for (int i=255; i>0; i-=5){
//LOW means the motor will turn right
digitalWrite(dir_b,LOW);
analogWrite(pwm_b,i); // speed counts from 0 to 255
delay(200);
}
{delay(200);
}
// Umkehr Drehrichtung motor2 Ausschwung
// motor2 Beschleunigen
// for (int i=0; i<256; i+=5){
// A = LOW and B = HIGH means the motor will turn left
// digitalWrite(motor2_A,HIGH);
//analogWrite(motor2_Speed,i); // speed counts from 0 to 255
//delay(20);
// }
// motor 2 Abbremsen
//for (int i=255; i>0; i-=5){
//HIGH means the motor will turn left
//digitalWrite(motor2_A,HIGH);
//analogWrite(motor2_Speed,i); // speed counts from 0 to 255
//delay(20);
// }
}
Am Anfang hatte ich überlegt an Stelle des Motor 2 ein Servo zu verwenden, aber die Bewegungen müssen langsam und gleichmäßig sein, deshalb fiel meine Wahl auf einen Getriebemotor.
Nochmals danke und viele Grüße,
Mathias