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
Simultane Steuerung von Motoren, Motorshield V2
14.03.2019, 18:06
Beitrag #1
Simultane Steuerung von Motoren, Motorshield V2
Hallo zusammen,

habe mir für den Arduino Uno das Motorshield V2.0 gekauft um daran 4 DC-Motoren zu betreiben.

Dazu installierte ich die benötigte Lib und öffnete den Sketch "DCMotor-Test". Dann änderte ich den Code so, dass alle 4 Motoren angesprochen werden, statt wahlweise 1-4.

Die im Sketch enthaltende Codeblöcke entsprechen schon mal dem, was die Motoren tun sollen. Also kopierte ich diese Blöcke jeweils 4-mal untereinander und änderte jeweils die Motornummer. In der Folge funktionieren die Motoren also nur hintereinander, nicht gleichzeitig. Ich möchte das gerne so steuern, dass ich die Motoren unabhängig voneinander regeln kann. D.h., dass die vorhanden Codeblöcke "anders" miteinander arrangiert werden müssen. Hierzu fehlen mir leider (noch) die nötigen Programmierkenntnisse.

Hierzu benötige ich also Hilfe. Huh

Hintergrund:
Die Motoren treiben je ein Jahrmarktsmodell an. Ziel soll sein, dass die Antriebe den jeweils im Codeblock hinterlegten Anweisungen folgen, aber eben unabhängig voneinander. Sprich- ich starte Modell 1 und es fährt sein Programm ab. Währenddessen wähle ich Modell 2 und auch das fährt sein Programm ab usw. So soll eine Anlage entstehen, die drei Modi fahren kann: Wahlweise, zufällig oder alle zusammen.

Hier mal mein bisheriger Code:
Code:
// Select which 'port' M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *myMotor1 = AFMS.getMotor(0);
Adafruit_DCMotor *myMotor2 = AFMS.getMotor(0);
Adafruit_DCMotor *myMotor3 = AFMS.getMotor(0);
Adafruit_DCMotor *myMotor4 = AFMS.getMotor(0);
// You can also make another motor on port M2
//Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2);

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Adafruit Motorshield v2 - DC Motor test!");

  AFMS.begin();  // create with the default frequency 1.6KHz
  //AFMS.begin(1000);  // OR with a different frequency, say 1KHz
  

}

void loop() {

//run forward
  myMotor1->setSpeed(150);
  myMotor1->run(FORWARD);
  delay(2000);

  myMotor2->setSpeed(150);
  myMotor2->run(FORWARD);
  delay(2000);

  myMotor3->setSpeed(150);
  myMotor3->run(FORWARD);
  delay(2000);

  myMotor4->setSpeed(150);
  myMotor4->run(FORWARD);  
  delay(2000);
}


Hoffe, ihr könnt mir helfen! Blush

Danke & Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2019, 18:19
Beitrag #2
RE: Simultane Steuerung von Motoren, Motorshield V2
Dann müssen die delay raus. in diesen 2 Sekunden wartet der Prozessor einfach nur. Du musst Deinen Sketch so schreiben, dass der Loop nicht blockiert wird.

Dazu musst Du die Zeiten mit millis() steuern. Schaue Dir dazu das Beispiel in der IDE BlinkWithoutDelay an und verstehe es. Dabei kann Dir die Nachtwächtererklärung helfen und eine weitere Erklärung hier in Tutorials und Literatur.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2019, 19:11
Beitrag #3
RE: Simultane Steuerung von Motoren, Motorshield V2
Okay, delay ist also der hierfür falsche Befehl, das hilft schon mal! ;-)
Und für time muss ich also erst eine Variable definieren. Ok...

Ich sollte vlt erklären, dass ich gerne Modelle/Anlagen baue, von Elektronik die nötigen Kenntnisse habe, vom programmieren aber gar keine!

Wenn ich mir so einen Code anschaue und die Parameter ändere, verstehe ich recht schnell, was was bedeutet. Und wenn "delay" hier falsch, dafür "milli" richtig ist, verstehe ich das auch. Insofern lerne ich gerade, Codes zu lesen bzw. zu verstehen.

Wo ich allerdings und offenbar noch weit von weg bin, ist, wo muss denn so eine Variable überhaupt eingefügt werden und wie sieht denn die Syntax dazu überhaupt aus? Dazu muss man ja die Sprache schon (fast) von Grund auf beherrschen. Von wegen "Satzbau".

Das ist wie mit einer Fremdsprache, wo man sagt- englisch verstehe ich ganz gut, nur am sprechen/schreiben haperts. Ich verstehe also über die Vokabeln, ums mal so zu sagen.

Das Beispiel mit dem Nachtwächter verstehe ich, habe also delay durch milli ersetzt aber jetzt meckert er wegen der Variablen.

Was mir am meisten helfen würde, wären Beispielcodes (für Motoren), die kann ich mir ansehen, ausprobieren und dabei lernen. Zwar hab ich hier selbst etliches gefunden, aber nix für 4 Motoren gleichzeitig usw. Wenn es hierzu passende Bespiele gibt, wäre ich für eine Verlinkung dankbar. Oder wenns einfacher ist, es bitte in o.g. Code einfügen. Das macht mir das Lernen auch einfacher, weswegen ich hier um Hilfe suche. Also nicht falsch verstehen- ich ersuche nicht um vorgekauten Code aber eben um Hilfe die meinem Anliegen entspricht. Blush
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2019, 21:22
Beitrag #4
RE: Simultane Steuerung von Motoren, Motorshield V2
In Deiner IDE hast Du Datei/Beispiele. Unter Digital ist BlinkWithoutDelay.
Das solltest Du Dir anschauen, da ist millis() demonstriert.

Hier gibt es noch eine andere Erklärung.
Das solltest Du Dir auch mal anschauen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Steuerung Lüftungsanlage über Temperatursensoren roller64 7 365 06.04.2019 10:26
Letzter Beitrag: rkuehle
  Programmierung eines Arduino Uno mit Motorshield Lancair4 8 530 24.02.2019 09:49
Letzter Beitrag: Lancair4
  Bewegung zweier Motoren mit unterschiedlicher Geschwindigkeit mit AccelStepper Yoink 2 801 15.07.2018 06:40
Letzter Beitrag: MicroBahner
  Tv Wandhalterung Steuerung Sushi582 6 1.124 30.04.2018 22:57
Letzter Beitrag: Sushi582
  Servo Steuerung mit PCA 9685 (Adressiernung) bernhard66 3 1.262 10.03.2018 11:06
Letzter Beitrag: juergen001
  Schieberegister LED Steuerung zeitlich anpassen Noformat 18 2.818 17.12.2017 16:45
Letzter Beitrag: Noformat
  parallele Steuerung Thor Wallhall 4 913 25.09.2017 19:12
Letzter Beitrag: Tommy56
  Milight Openmili Steuerung gronph 25 11.064 22.08.2017 09:09
Letzter Beitrag: sn0000py
  I2C LCD mit Motorshield benutzen nomis 9 2.203 02.07.2017 21:08
Letzter Beitrag: Sixtus80
  Motor Steuerung durch Sensoren Werte Zerebrator 14 2.745 12.06.2017 14:36
Letzter Beitrag: Franz54

Gehe zu:


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