INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
3 Gleichstrommotoren nacheinander ansteuern
30.06.2015, 16:43
Beitrag #1
3 Gleichstrommotoren nacheinander ansteuern
Aloha zusammen Smile

Ich habe folgendes Projekt welches ich gerade realisiere:

Taster wird gedrückt und startet ein einmalig ablaufendes Programm.
3 DC Motoren bewegen verschiedene Teile eines Landschaftsmodells, fahren nach erreichen der Endposition des letzten Motors umgekehrt wieder zurück in die Startposition --- Das Spiel kann dann von vorne beginnen.

Zeitgesteuert ist das ja gar kein Problem, allerdings möchte ich das ganze mit Endlagentastern realisieren ... der Knackepunkt (für mich zumindest Huh) ist das ich jeweils den nächsten Motor starten möchte wenn der vorige einen Endlagentaster erreicht und betätigt hat (hier natürlich sowohl im Rechts- wie auch im Linkslauf)

Ich bin mit den if und else befehlen noch nicht ganz so vertraut Blush Ich lese mich in verschiedene Projekte ein aber habe noch nicht ganz verstanden wie ich komplexere Befehle damit aufbauen kann.

Hat jemand von euch einen Tipp ?

Danke schonmal Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.06.2015, 17:29
Beitrag #2
RE: 3 Gleichstrommotoren nacheinander ansteuern
(30.06.2015 16:43)Nik Spunkleton schrieb:  Hat jemand von euch einen Tipp ?
Ja, mach das ganze erstmal für einen Motor. D.h. lass den vor und zurück fahren.
Wenn das klappt, dann den nächsten...

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.08.2015, 15:26 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2015 15:27 von Nik Spunkleton.)
Beitrag #3
RE: 3 Gleichstrommotoren nacheinander ansteuern
Ich habe das Programm mal so geschrieben wie es für mich logisch wäre und immer an ein nächstes Unterprogramm verwiesen damit man am Ende wieder im Loop landet. Frage ist ob es so überhaupt Funktioniert Huh
mit fällt allerdings kein anderer Ansatz ein.

Eventuell könnt ihr mir eine andere Option geben

int tasterLEDRED = 13;
int tasterLEDGREEN = 12;
int tasterPin = 11;
int enablePin = 18;

int motor1_a = 10;
int motor1_b = 9;
int motor2_a = 8;
int motor2_b = 7;
int motor3_a = 6;
int motor3_b = 5;
//const int motor4_a = 4;
//const int motor4_b = 3; Schranken in den Zeitverlauf mit einbringen !!!!

int endlage1 = 2;
int endlage1z = 1;
int endlage2 = 17;
int endlage2z = 14;
int endlage3 = 15;
int endlage3z = 16;
//const int endlage4 = ; Nur eventuell falls die Schranken keine eigenen haben bzw keine brauchen
//const int endlage4z = ;

int tasterStatus;
int tasterStatusEndlage1;
int tasterStatusEndlage1z;
int tasterStatusEndlage2;
int tasterStatusEndlage2z;
int tasterStatusEndlage3;
int tasterStatusEndlage3z;

void setup() {
pinMode (tasterLEDRED, OUTPUT);
pinMode (tasterLEDGREEN, OUTPUT);
pinMode (tasterPin, INPUT);
pinMode (enablePin, OUTPUT);

pinMode (motor1_a, OUTPUT);
pinMode (motor1_b, OUTPUT);
pinMode (motor2_a, OUTPUT);
pinMode (motor2_b, OUTPUT);
pinMode (motor3_a, OUTPUT);
pinMode (motor3_b, OUTPUT);
//pinMode (motor4_a, OUTPUT);
//pinMode (motor4_b, OUTPUT);

pinMode (endlage1, INPUT);
pinMode (endlage1z, INPUT);
pinMode (endlage2, INPUT);
pinMode (endlage2z, INPUT);
pinMode (endlage3, INPUT);
pinMode (endlage3z, INPUT);
//pinMode (endlage4, INPUT); Wie oben !
//pinMode (endlage4z, INPUT);
digitalWrite (tasterLEDGREEN, HIGH);
digitalWrite (tasterLEDRED, LOW);
digitalWrite (motor1_a, LOW);
digitalWrite (motor1_b, LOW);
digitalWrite (motor2_a, LOW);
digitalWrite (motor2_b, LOW);
digitalWrite (motor3_a, LOW);
digitalWrite (motor3_b, LOW);
}

void loop() {

tasterStatus = digitalRead(tasterPin);
if(tasterStatus == HIGH)
start();

}

void start(){

digitalWrite (tasterLEDGREEN, LOW);
digitalWrite (tasterLEDRED, HIGH);
digitalWrite (enablePin, HIGH);
delay (200);
digitalWrite (motor1_a, HIGH);
digitalWrite (motor1_b, LOW);

tasterStatusEndlage1 = digitalRead (endlage1);
if(tasterStatusEndlage1 == HIGH)
motor2();
}

void motor2(){
digitalWrite (motor1_a, LOW);
digitalWrite (motor1_b, LOW);
delay (20);
digitalWrite (motor2_a, HIGH);
digitalWrite (motor2_b, LOW);

tasterStatusEndlage2 = digitalRead (endlage2);
if(tasterStatusEndlage2 == HIGH)
motor3();
}

void motor3(){
digitalWrite (motor2_a, LOW);
digitalWrite (motor2_b, LOW);
delay (20);
digitalWrite (motor3_a, HIGH);
digitalWrite (motor3_b, LOW);

tasterStatusEndlage3 = digitalRead (endlage3);
if(tasterStatusEndlage3 == HIGH)
motor3z();
}

void motor3z(){
digitalWrite (motor3_a, LOW);
digitalWrite (motor3_b, LOW);
delay (1000);
digitalWrite (motor3_a, LOW);
digitalWrite (motor3_b, HIGH);

tasterStatusEndlage3z = digitalRead (endlage3z);
if(tasterStatusEndlage3z == HIGH)
motor2z();
}

void motor2z(){
digitalWrite (motor3_a, LOW);
digitalWrite (motor3_b, LOW);
delay (20);
digitalWrite (motor2_a, LOW);
digitalWrite (motor2_b, HIGH);

tasterStatusEndlage2z = digitalRead (endlage2z);
if(tasterStatusEndlage2z == HIGH)
beenden();
}

void beenden(){
digitalWrite (motor2_a, LOW);
digitalWrite (motor2_b, LOW);
delay (20);
digitalWrite (motor1_a, LOW);
digitalWrite (motor1_b, HIGH);

tasterStatusEndlage1z = digitalRead (endlage1z);
if(tasterStatusEndlage1z == HIGH)
digitalWrite (motor1_a, LOW);
digitalWrite (motor1_b, LOW);
delay (100);
digitalWrite (enablePin , LOW);
digitalWrite (tasterLEDRED, LOW);
delay (200);
digitalWrite (tasterLEDGREEN, HIGH);
}

Danke schonmal im vorraus

Nik
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.08.2015, 16:38
Beitrag #4
RE: 3 Gleichstrommotoren nacheinander ansteuern
Hi,
ich glaube, dass das so nicht wirklich was wird. Ich würde vermuten, dass die drei Motoren erstmal alle bis an die Endlage fahren. Dann wird aber Motor 3 wahrscheinlich immer hin und her ruckeln.
Mach doch erstmal so, wie ich Dir gesagt habe: Lass einen Motor vor- und zurück fahren. Wenn das funktioniert, dann kann man es erweitern.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino 2 schrittmotoren ansteuern super47 3 127 03.12.2016 14:31
Letzter Beitrag: Franz54
  Ansteuern eines Schrittmotors Uwe1475 28 1.014 03.09.2016 21:03
Letzter Beitrag: Uwe1475
  Virtuelle Instrumente ansteuern mit Arduino.. arduinopeter 1 273 29.04.2016 12:51
Letzter Beitrag: tiny85fan
  8 LED , 7-Segment-Elemente einzeln ansteuern beim tm1638 und die Buttons arduinofan 0 502 15.01.2016 22:37
Letzter Beitrag: arduinofan
  Ausgange nacheinander schalten Mondeokutscher 20 2.627 05.08.2015 10:51
Letzter Beitrag: Mondeokutscher
  Servo per Serieller Mointor ansteuern iggy 1 816 03.08.2015 03:08
Letzter Beitrag: yasi
  Arduino+ESP8266 über Webinterface ansteuern pet13 1 1.610 29.05.2015 13:23
Letzter Beitrag: pet13
  WS2801 Strip LED einzeln ansteuern michanto 8 2.595 26.03.2015 20:05
Letzter Beitrag: MaHa1976
  5 Getriebemotoren ansteuern the_inc0 3 884 27.11.2014 22:24
Letzter Beitrag: Thorsten Pferdekämper
  HILFE! Servo über Mikrophon ansteuern jadeblau 5 4.084 02.06.2014 09:17
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste