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.

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

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?

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
  mit if aus do-while oder while Schleife aussteigen Nafetz 6 102 Gestern 21:41
Letzter Beitrag: Pit
  while Schleife nach sleep mode interrupt tklaus 13 247 23.11.2016 17:40
Letzter Beitrag: Tommy56
  Do-While-Schleife Abbruchbedinung Majera 14 254 22.11.2016 18:07
Letzter Beitrag: Pit
  Schleife Hannes 3 194 16.11.2016 00:54
Letzter Beitrag: Hannes
  Problem: SDFat - Das Ende einer Datei finden und Schleife beenden MartinK 4 488 01.04.2016 05:49
Letzter Beitrag: MartinK
  Aus While-Schleife durch Interrupt aussteigen Zill3 10 1.186 08.02.2016 16:28
Letzter Beitrag: ardu_arne
  Kann ich in eine For Schleife einen delay einbauen JanGamer11 6 613 05.01.2016 12:34
Letzter Beitrag: Hilgi
  digitalRead in einer Schleife luto92 5 833 15.10.2015 22:09
Letzter Beitrag: hotsystems
  Schleife erzwingen von vorne durchzulaufen scritch 16 1.329 18.09.2015 11:44
Letzter Beitrag: Thorsten Pferdekämper
  Schleife wiederholen diode1990 1 757 07.08.2015 20:34
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


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