Forum: Mikrocontroller und Digitale Elektronik For- Next- Schleife


von NANO (Gast)


Lesenswert?

Hallo,

bin beim einarbeiten zum Thema Arduino- NANO.
Es soll eine "For- Schleife" gebaut werden, die 5 mal die Led blinken 
lässt.
Der x- Wert soll im Seriellen Monitor angezeigt werden.
Es lässt sich compilieren, aber es blinkt nichts, es wird auch nichts 
angezeigt.
Wer weiss Rat.
Grüsse Nano

PS.: das übliche "Blink"- Programm funktioniert, sodass ich Aufbaufehler
ausschlisse.

const int LedGelb =  10;      //  Led gelb
int x = 0;
void setup() {
  Serial.begin(9600);
  pinMode(LedGelb, OUTPUT);

}
  void loop()
{
  for ( x=0; x=4;)
  x++;
    Serial.println(x);
 digitalWrite(LedGelb, HIGH);
  delay(250);
 digitalWrite(LedGelb, LOW);
  delay(250);
}

von Peter II (Gast)


Lesenswert?

NANO schrieb:
> for ( x=0; x=4;)
>   x++;
>   Serial.println(x);

Hast du einfach mal bei Google nach "for C++" gesucht? Da ist mehr als 1 
Fehler drin.

von Joe F. (easylife)


Lesenswert?


von foobar (Gast)


Lesenswert?

Da blinkt nichts weil du x++ in einer Endlosschleife ausführst

von Falk B. (falk)


Lesenswert?

Man sollte bei C nicht mit {} sparen, auch wenn es die Sprache erlaubt!

von Hans (Gast)


Lesenswert?

Hi!

Da ist nicht nur insgesamt mehr als ein Fehler in der for-Schleife.

Wenn die LED nur 5 mal blinken soll, hat das SO in der loop()-Funktion 
nichts verloren....

TIPP: Was passiert, wenn die momentan noch nicht funktionierende 
for-Schleife fertig ist mit der Bearbeitung?

Hans

von Falk B. (falk)


Lesenswert?

1
const int LedGelb =  10;      //  Led gelb
2
int x = 0;
3
4
void setup() {
5
  Serial.begin(9600);
6
  pinMode(LedGelb, OUTPUT);
7
8
}
9
10
void loop()
11
{
12
  for ( x=0; x<4; x++)
13
  {
14
    Serial.println(x);
15
    digitalWrite(LedGelb, HIGH);
16
    delay(250);
17
    digitalWrite(LedGelb, LOW);
18
    delay(250);
19
  }
20
}

So eine gescheite Formatierung wirkt Wunder . . .

von Hans (Gast)


Lesenswert?

Hi!

Blinkt aber trotzdem unendlich oft.

Hans

von Hans (Gast)


Lesenswert?

Hi!

Dank Falk sind die Hausaufgaben auch schon fast fertig.

Hans

von Peter II (Gast)


Lesenswert?

Falk B. schrieb:
> So eine gescheite Formatierung wirkt Wunder . . .

da ist noch ein Schönheitsfehler drin. einfach kommt die { nach der 
Funktion und einmal auf der nächsten Zeile.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

NANO schrieb:
> Es soll eine "For- Schleife" gebaut werden, die 5 mal die Led blinken
> lässt.

Falk B. schrieb:
> for ( x=0; x<4; x++)

Was passt hier nicht?

von npn (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> NANO schrieb:
>> Es soll eine "For- Schleife" gebaut werden, die 5 mal die Led blinken
>> lässt.
>
> Falk B. schrieb:
>> for ( x=0; x<4; x++)
>
> Was passt hier nicht?

Ich weiß es. Statt x<4 kann man auch x<5 schreiben (oder x<199) 
schreiben, das ändert rein gar nichts. Wobei ich erstmal zur 5 tendieren 
würde ;-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

npn schrieb:
> Statt x<4 kann man auch x<5 schreiben (oder x<199) schreiben, das ändert
> rein gar nichts.

Im Arduino-Kontext vielleicht, aber innerhalb der Funktion loop tut es 
das sehr wohl.

von Daniel A. (daniel-a)


Lesenswert?

Rufus Τ. F. schrieb:
> NANO schrieb:
>> Es soll eine "For- Schleife" gebaut werden, die 5 mal die Led blinken
>> lässt.
>
> Falk B. schrieb:
>> for ( x=0; x<4; x++)
>
> Was passt hier nicht?

Eine Iteration zu wenig? Hier mal einige nicht gesuchte lösungen:
1
for ( x=0; x<-~4; x++)
1
for ( x=0; x<=4; x++)
1
for ( x=-1; x<4; x++)
1
for ( x=~0; x<4; x++)
1
for ( x=0; ~-x<4; x++)
1
for ( x=0; ++x<6; )

von npn (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> npn schrieb:
>> Statt x<4 kann man auch x<5 schreiben (oder x<199) schreiben, das ändert
>> rein gar nichts.
>
> Im Arduino-Kontext vielleicht, aber innerhalb der Funktion loop tut es
> das sehr wohl.

Eben, genau darum gings mir ja.
Hier im konkreten Beispiel des TO ändert sich gar nichts. ;-)
Was nützt es dem TO, wenn er weiß, daß auf einem anderen System was 
anderes passiert als bei ihm auf dem Arduino?

von Nao (Gast)


Lesenswert?

Hallo,
vielen Dank für die bisherigen Hinweise, vorraging zur Formatierung 
meines, offensichtlich, fehlerhaften Source- Codes.
Jetzt siehts ja schön aus, auch wenn es nicht funktioniert.
Es sind definitiv keine Schulaufgaben! Das ist bei mir schon ewig her!
Habe da eher zwischenzeitlich selbst unterrichtet, allerdings andere 
Fachrichtungen.
Danke & Grüsse
Nano

von Genuino (Gast)


Lesenswert?

1
 const int LedGelb =  10;      //  Led gelb
2
 int x = 0;
3
 
4
 void setup() {
5
   Serial.begin(9600);
6
   pinMode(LedGelb, OUTPUT);
7
 
8
   for ( x=0; x<4; x++)
9
   {
10
     Serial.println(x);
11
     digitalWrite(LedGelb, HIGH);
12
     delay(250);
13
     digitalWrite(LedGelb, LOW);
14
     delay(250);
15
   }
16
 }
17
 
18
 void loop()
19
 {
20
    Serial.println("ich sagte doch nur 5x!");
21
 }


Was ist die Bedeutung der Funktionen "setup()" und "loop()" genau?

Herr Ober! Einmal Nachdenken bitte!

von lalala (Gast)


Lesenswert?

wird setup und loop überhaupt aufgerufen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

lalala schrieb:
> wird setup und loop überhaupt aufgerufen?

In der Arduino-Umgebung ja. Da sieht der Anwender kein main.

von Eric B. (beric)


Lesenswert?

Genuino schrieb:

  [schnipps]

> Was ist die Bedeutung der Funktionen "setup()" und "loop()" genau?

Setup soll nur die Vorbereitungen zur eigentliche (Endlos-)Arbeit 
leisten. Eine Blink-Routine hat deswegen da gar nix verloren. 6-, 
Klassenziel nicht erreicht, sitzenbleiben und nachholen.

> Herr Ober! Einmal Nachdenken bitte!

Ja ja.

1
const int LedYellow =  10;
2
int x = 0;
3
 
4
void setup() {
5
  Serial.begin(9600);
6
  pinMode(LedYellow, OUTPUT);
7
}
8
 
9
void loop()
10
{
11
  /* Blink if necessary */
12
  if ( x < 10)
13
  {
14
    Serial.println(x);
15
    if (x & 1)
16
    {
17
      digitalWrite(LedYellow, LOW);
18
    } else {
19
      digitalWrite(LedYellow, HIGH);
20
    }
21
    x++;
22
  }
23
24
  delay(250);
25
}

: Bearbeitet durch User
von npn (Gast)


Lesenswert?

Das ist aber auch sehr unsauber. Erreicht werden soll, daß 5mal geblinkt 
wird und dann NICHT wieder.
Wo ist der Abbruch nach 5maligem Blinken bei dir?
Kleiner Tipp von mir: x kann nicht unendlich incrementiert werden ;-)

Eric B. schrieb:
> 6-, Klassenziel nicht erreicht, sitzenbleiben und nachholen.

von Daniel A. (daniel-a)


Lesenswert?

npn schrieb:
> Kleiner Tipp von mir: x kann nicht unendlich incrementiert werden ;-)

Schau nochmal genauer nach, "x++" steht innerhalb von "if(x<10)", wird 
also ab x==10 nichtmehr erhöt.

von Cyblord -. (cyblord)


Lesenswert?

Langsam wird es echt mal Zeit für ein Arduino Unterforum. Da können sich 
dann die ganzen Programmier-Legastheniker gegenseitig eine for-Scheife 
erklären. Aber so ein unwürdiges Schauspiel muss doch nicht ins reguläre 
Forum oder? Wie weit soll das Niveau hier noch sinken? Als nächstes 
nehmen wir Malen nach Zahlen für Vorschüler durch?

: Bearbeitet durch User
von Jodel (Gast)


Lesenswert?

Ich gratuliere dir zum 7431 destruktiven Beitrag.

von Cyblord -. (cyblord)


Lesenswert?

Jodel schrieb:
> Ich gratuliere dir zum 7431 destruktiven Beitrag.

Eigentlich ist die Forderung ein neues Unterforum einzurichten eher 
Konstruktiv. Ich würde mich natürlich auch als Moderator zur Verfügung 
stellen. Ich bringt alles dafür mit: Bin freundlich, kompetent, seriös 
und unbestechlich (außer durch Geld, Essen oder Frauen) Wo kann ich da 
meine Bewerbung hinschicken?

: Bearbeitet durch User
von zipzap (Gast)


Lesenswert?

Cyblord -. schrieb:
> Eigentlich ist die Forderung ein neues Unterforum einzurichten eher
> Konstruktiv.

Wenn wir schon OT sind: So groß würde ich konstruktiv nicht schreiben.

von ?!? (Gast)


Lesenswert?

Cyblord -. schrieb:
> Ich bringt alles dafür mit: Bin freundlich, kompetent, seriös
> und unbestechlich (außer durch Geld, Essen oder Frauen) Wo kann ich da
> meine Bewerbung hinschicken?

Am besten zum Kurt. Der ist genauso kompetent und seriös ;-)

von Jan H. (jan_m_h)


Lesenswert?

Cyblord -. schrieb:
> Ich bringt alles dafür mit: Bin freundlich, kompetent, seriös und
> unbestechlich (außer durch Geld, Essen oder Frauen) Wo kann ich da meine
> Bewerbung hinschicken?

Manchmal kann ich mich einfach nicht entscheiden, ob ich man dir eine 
Kopfnuss oder ein Bier spendieren sollte :-D

von Eric B. (beric)


Lesenswert?

Jan H. schrieb:
> Cyblord -. schrieb:
>> Ich bringt alles dafür mit: Bin freundlich, kompetent, seriös und
>> unbestechlich (außer durch Geld, Essen oder Frauen) Wo kann ich da meine
>> Bewerbung hinschicken?
>
> Manchmal kann ich mich einfach nicht entscheiden, ob ich man dir eine
> Kopfnuss oder ein Bier spendieren sollte :-D

Im Einklang mit unserer Entscheidungsunfähiger Gesellschaft würde ich 
sagen: Beides!

von Nano (Gast)


Lesenswert?

Hi,

danke für Hilfe an foobar, Falk Brunner , Hans und Eric B.
Alles begriffen.
Es funktioniert nun wie gewünscht.
Einen schönen Tag
Nano.

von Cyblord -. (cyblord)


Lesenswert?

Nano schrieb:

> Alles begriffen.
Die Worte hör ich wohl....

von Der Andere (Gast)


Lesenswert?

Hat sich mal wieder jemand die Hausaufgaben machen lassen.
Aber immerhin hat er sich artig dafür bedankt.

von Nano (Gast)


Lesenswert?

@ Der Andere,
   wie kann man nur schlecht denken.
   Nochmal:
   Es handelt sich tatsächlich um persönliches Interesse und um keine
   Schulaufgaben. (1. Thread lesen)
   Darum:
   Vielleicht kannst Du es nicht begreifen --> unwissender  Mensch
   Vielleicht willst Du es nicht begreifen --> armer Mensch
   Manchmal ist Zurückhaltung einfach besser.

   Nano

von Cyblord -. (cyblord)


Lesenswert?

Nano schrieb:
>    Manchmal ist Zurückhaltung einfach besser.

Dann halt dich mal an deine eigenen Tipps. Deine Ausführungen sind 
absoluter Unfug. Nur weil dir jemand etwas nicht glaubt, oder etwas 
unterstellt, ist er weder Dumm noch Arm. Das ist nur beleidigtes 
Geschwafel ohne Sinn. Also lass doch gut sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.