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
for - Schleife
26.03.2016, 18:40 (Dieser Beitrag wurde zuletzt bearbeitet: 26.03.2016 22:44 von Bitklopfer.)
Beitrag #1
for - Schleife
Hallo,

ich habe folgendes Problem. Ich habe einen Code geschreiben zur Ansteuerung von Schrittmotoren. Wenn ich nun das Board über USB an den PC anschließe und noch die externe Versorgung anschließe funktioniert alles wunderbar. Aber wenn ich nur die externe Versorgung anschließe läuft er den code ab und es passt auch anfangs alles aber statt dass der code dann 4 mal durchläuft läuft er nur einmal ab und geht dann aus der schleife wieder raus.
Ich nehm auch nur 1% des dynamischen und 1% des Programmspeicherplatzes her.

Im setup teil hab ich auch noch eine for schleife allerdings funktioniert die immer.

Wenn mir jemand helfen kann wär ich echt froh.

Hier noch die Schleife (ich weiß man könnte den teil mit dem digitalWrite auch nochmal in eine for schleife packen):

Code:
for (int t = 0; t <= 3; t++)
  {


    y = 12000;
    x = random(0, 4);

    if (x == 1)
    {
      digitalWrite(LEDorange, HIGH);
      Motor1.step(bewegen);
      digitalWrite(LEDorange, LOW);
      digitalWrite(LEDgrun, HIGH);
      delay(y);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      digitalWrite(LEDorange, HIGH);
      Motor1.step(-bewegen);
      delay(wait);
      digitalWrite(LEDorange, LOW);

    }


    else if (x == 2)
    {
      digitalWrite(LEDorange, HIGH);
      Motor2.step(-bewegen);
      digitalWrite(LEDorange, LOW);
      digitalWrite(LEDgrun, HIGH);
      delay(y);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      digitalWrite(LEDorange, HIGH);
      Motor2.step(bewegen);
      delay(wait);
      digitalWrite(LEDorange, LOW);

    }
    else
    {
      digitalWrite(LEDorange, HIGH);
      Motor3.step(-bewegen);
      digitalWrite(LEDorange, LOW);
      digitalWrite(LEDgrun, HIGH);
      delay(y);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      digitalWrite(LEDorange, HIGH);
      Motor3.step(bewegen);
      delay(wait);
      digitalWrite(LEDorange, LOW);

    }

  }

Gruß

#elextro19
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.03.2016, 18:51
Beitrag #2
RE: for - Schleife
Damit wir den Fehler erkennen können, brauchen wir den kompletten Sketch.
Poste den bitte in Code-Tags, Schaltfläche # verwenden.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.03.2016, 10:45
Beitrag #3
RE: for - Schleife
ok hier noch der ganze code:

Code:
#include <Stepper.h>

int LEDgrun = 28;
int LEDorange = 26;
int LEDrot = 24;
int y;
int Button = 22;
int x;
int z;
char a;
int bewegen = 55;
int wait = 500;

Stepper Motor1(200, 2, 3, 4, 5);
Stepper Motor2(200, 6, 7, 8, 9);
Stepper Motor3(200, 10, 11, 12, 13);


void setup() {
  Motor1.setSpeed(20);
  Motor2.setSpeed(20);
  Motor3.setSpeed(20);

  for (int i = 2; i == 13; i++)
  {

    pinMode(i, OUTPUT);

  }

  pinMode(Button, INPUT);
  pinMode(LEDrot, OUTPUT);
  pinMode(LEDorange, OUTPUT);
  pinMode(LEDgrun, OUTPUT);
}

void loop() {

  a = digitalRead(Button);
  while (a == HIGH)
  {
    a = digitalRead(Button);
    digitalWrite(LEDrot, HIGH);
  }
  digitalWrite(LEDrot, LOW);
  digitalWrite(LEDrot, HIGH);
  digitalWrite(LEDorange, HIGH);
  digitalWrite(LEDgrun, HIGH);
  delay(10000);
  digitalWrite(LEDrot, LOW);
  delay(1000);
  digitalWrite(LEDorange, LOW);
  delay(1000);
  digitalWrite(LEDgrun, LOW);

  for (int t = 0; t <= 3; t++)
  {


    y = 12000;
    x = random(0, 4);

    if (x == 1)
    {
      digitalWrite(LEDorange, HIGH);
      Motor1.step(bewegen);
      digitalWrite(LEDorange, LOW);
      digitalWrite(LEDgrun, HIGH);
      delay(y);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      digitalWrite(LEDorange, HIGH);
      Motor1.step(-bewegen);
      delay(wait);
      digitalWrite(LEDorange, LOW);

    }


    else if (x == 2)
    {
      digitalWrite(LEDorange, HIGH);
      Motor2.step(-bewegen);
      digitalWrite(LEDorange, LOW);
      digitalWrite(LEDgrun, HIGH);
      delay(y);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      digitalWrite(LEDorange, HIGH);
      Motor2.step(bewegen);
      delay(wait);
      digitalWrite(LEDorange, LOW);

    }
    else
    {
      digitalWrite(LEDorange, HIGH);
      Motor3.step(-bewegen);
      digitalWrite(LEDorange, LOW);
      digitalWrite(LEDgrun, HIGH);
      delay(y);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      delay(500);
      digitalWrite(LEDgrun, HIGH);
      delay(500);
      digitalWrite(LEDgrun, LOW);
      digitalWrite(LEDorange, HIGH);
      Motor3.step(bewegen);
      delay(wait);
      digitalWrite(LEDorange, LOW);

    }

  }

}


falls ich die problemversachende for schleife im loop teil genau so schreibe wie die im setupt ( for (int t = 0; t == 3; t++) ) dann wird die for schleife garnicht erst abgefahren, egal ob mit oder ohne usb verbindung.

Gruß

#elextro19
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.03.2016, 11:05
Beitrag #4
RE: for - Schleife
(27.03.2016 10:45)#elextro19 schrieb:  falls ich die problemversachende for schleife im loop teil genau so schreibe wie die im setupt ( for (int t = 0; t == 3; t++) ) dann wird die for schleife garnicht erst abgefahren, egal ob mit oder ohne usb verbindung.

https://www.arduino.cc/en/Reference/For

Zitat:Each time through the loop, the condition is tested; if it's true, the statement block, and the increment is executed, then the condition is tested again. When the condition becomes false, the loop ends.

Die für Schleife im setup wird nicht ausgeführt weil die condition nicht True ist.

Gruß Bob

Elektronische Torwand
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.03.2016, 11:22
Beitrag #5
RE: for - Schleife
(26.03.2016 18:40)#elextro19 schrieb:  ...
Wenn ich nun das Board über USB an den PC anschließe und noch die externe Versorgung anschließe funktioniert alles wunderbar. Aber wenn ich nur die externe Versorgung anschließe läuft er den code ab und es passt auch anfangs alles aber statt dass der code dann 4 mal durchläuft läuft er nur einmal ab und geht dann aus der schleife wieder raus.
...

Hallo,
unterschiedliches Verhalten bei unterschiedlicher Stromversorgung deutet sehr auf eine ungeeignete Stromversorgung hin.
Kannst du mal ein paar Daten über die verwendeten Komponenten liefern und einen Schaltplan wie alles zusammenhängt.

Gruß
Arne

Gruß Arne
ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.03.2016, 11:32
Beitrag #6
RE: for - Schleife
Und du hast in der Deklaration die Variable "a" als char deklariert, verwendest diese aber als "int" in einer "while-Schleife", warum?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.03.2016, 13:21
Beitrag #7
RE: for - Schleife
Hab das Problem gefunden Big Grin

Ihr habt mir alle geholfen Big Grin
die for schleifen habe ich ausgebessert.
die char variable hab ich auch ausgebessert.
und ich glaub das hauptsächliche problem war, dass das board zu wenig spannung hatte.
ich hatte das board mit 7,5 volt und ohne usb verbindung versorgt als das problem immer aufgetreten ist. und ich habe 3 7,5 volt motoren verbaut.
nun versorge ich das board mit 9 volt und ohne usb verbindung und es funktioniert alles ohne probleme.

Danke euch allen und frohe oster noch! Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Unverständnis bei FOR-Schleife Telefonmann 3 242 22.02.2018 14:29
Letzter Beitrag: Telefonmann
  Variablenname über Schleife deklarieren golden_eagle 9 448 12.02.2018 22:36
Letzter Beitrag: golden_eagle
  Schleife nach else beenden Chef_2 24 1.032 08.02.2018 23:28
Letzter Beitrag: Franz54
  While Schleife in einer If abfrage Thorsten_S 4 455 30.12.2017 16:37
Letzter Beitrag: Thorsten_S
Sad Loop Schleife wird unterbrochen? M3tzl3r 4 510 21.12.2017 23:44
Letzter Beitrag: hotsystems
  Welche schleife macht Sinn? Franklin 11 1.258 18.03.2017 15:39
Letzter Beitrag: MicroBahner
  Programmierung Schleife florikus 0 631 03.03.2017 18:46
Letzter Beitrag: florikus
  Loop Schleife abbrechen mittlig1977 1 1.176 06.01.2017 22:18
Letzter Beitrag: Tommy56
  mit if aus do-while oder while Schleife aussteigen Nafetz 6 972 05.12.2016 21:41
Letzter Beitrag: Pit
  while Schleife nach sleep mode interrupt tklaus 13 1.583 23.11.2016 17:40
Letzter Beitrag: Tommy56

Gehe zu:


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