Frage bezüglich Erstes_Programm.pde

Hallo,

Ich bin neu in der Welt der Programmierung und habe mir ein Arduino Freearduino (Wie Duemilanove) von Franzis Verlag zu gelegt.

Habs gestern abend erhalten und bin nun auf Seite 72, für den Fall dass jemand das gleiche Paket besitzt.

Mein Frage bezieht sich auf das beispiel Programm Erstes_Programm.pde

Hier der CODE:

// Franzis Arduino
// Das erste Arduino Programm das ich selber abtippe :-)

int ledPin =  13;  // Die LED ist an Pin 13 angeschlosssen

void setup()
{
 Serial.begin(9600); 
 pinMode(ledPin, OUTPUT); 
 Serial.println("Unser erstes Arduino Programm"); 
 Serial.println();
}

void loop()
{
  Serial.print("Die Summe aus 5 + 188 lautet ");
  Serial.print(5+188);
  
  while(true)
  { 
   digitalWrite(ledPin, HIGH);   // LED einschalten
   delay(500);                   // warten für 500ms
   digitalWrite(ledPin, LOW);    // LED ausschalten
   delay(500);                   // warten 500ms
   continue;
  }      
}

Meine Frage nun:

Ich habe das Ganze nun immer wieder abgeändert um die einzelnen Funktionen zu verstehen dabei ist mir aufgefallen, dass wenn ich das while(true) weg lasse der Vermerk kommt dass das continue nicht in einem Loop stehen kann. Somit habe ich schonmal verstanden dass beide while(true) und continue zusammen hängen. Also habe ich es auch umgedreht versucht und das continue weg gelassen und while(true) nicht entfernt. Dies hat trotzdem funktioniert ohne Fehlermeldung. Darauf hin habe ich das hier gefunden: http://arduino.cc/en/Reference/Continue, das hat mir allerdings keine Erleuchtung gebracht.

Ich verstehe dass wenn ich While (true) und continue weglasse dass dann der loop weiter läuft und immer wieder das Ergebniss mitsammt dem kleinen Satz hinschreibt. Aber wozu ist denn in diesem beispiel das continue da? Ich sehe keinen Sinn.

Wäre super wenn einer von euch mir weiter helfen könnte.

Zu mir, Ich bin 25 und System administrator wollte immer Programmieren lernen doch wurde von meinem Arbeitgeber Mic...oft dazu gedrängt alle Zertifikate des System Administrators zu machen und das Programmieren bei Seite zu lassen. Da er mir so viel arbeit aufgebrummt hat und ich Ausbilder wurde war es mir selbst in meiner Freizeit nicht mehr möglich meinem Traum des Programmierers nach zu gehen. Ein bischen die Geschichte vom Mensch im falschen Körper, ein Programmierer im Körper eines System admins ;-). Nunja jetzt habe ich den Arbeitgeber gewechselt und mich sofort in die Programmierung gestürzt und nichts ist besser als Learning by doing, und Arduino ist kreativ und zu gleich verspielt desswegen damit starten und habe schon weitere Lernkits hier liegen die darauf folgen sollen.

Also ich bin sehr dankbar für jede Hilfestellung, denn je schneller ich die Grundlagen verstehe dessto schneller werde ich meinen Beitrag an der Community leisten können und hoffentlich interessante Ideen umzusetzen.

Danke euch allen

Stay Geek

MfG Frank

frankbackes: void loop() { Serial.print("Die Summe aus 5 + 188 lautet "); Serial.print(5+188);

while(true) { digitalWrite(ledPin, HIGH); // LED einschalten delay(500); // warten für 500ms digitalWrite(ledPin, LOW); // LED ausschalten delay(500); // warten 500ms continue; } }

"continue" bricht die Abarbeitung der Schleife ab und die Schleife beginnt wieder am Schleifenkopf. Das funktioniert aber nicht nur mit einer "while" Schleife, sondern mit jeder (z.B. for ( ; ; )). Somit ist ein "continue" am Schleifenende absolut sinnfrei. Eine Endlosschleife in dieser Form ist auch nicht praktikabel, die Funktion "loop()" an sich ist ja schon eine Endlosschleife. Folgender Code bewirkt genau das gleiche, ist jedoch logischer und übersichtlicher:

// Franzis Arduino
// Das erste Arduino Programm das ich selber abtippe :-)

#define ledPin 13  // Die LED ist an Pin 13 angeschlosssen

void setup()
{
 Serial.begin(9600); 
 pinMode(ledPin, OUTPUT); 
 Serial.println("Unser erstes Arduino Programm"); 
 Serial.println();

  Serial.print("Die Summe aus 5 + 188 lautet ");
  Serial.print(5+188);
}

void loop()
{
   digitalWrite(ledPin, HIGH);   // LED einschalten
   delay(500);                   // warten für 500ms
   digitalWrite(ledPin, LOW);    // LED ausschalten
   delay(500);                   // warten 500ms
}

Wenn Dein Programmcode wirklich so 1:1 in dem Buch steht, würde ich das Buch ganz schnell in die Tonne treten.

Da stehen noch andere sachen drin die ab und an sehr incoherent sind, sie verschreiben sich in der Zeile der beschreibung und Schreibfehler aber zum Glück schalte ich mein Gehirn nicht ab beim Lesen.

Dachte ich mir doch dass es sin frei ist ein continue, hatte den Code auch genau so reduziert wie du.

Danke für die bestätigung

Ich muß MaFu vollens recht geben. Solche Beispiele zu schreiben für ein Anfängerbuch ist kriminell und zeugt entweder von mangelden Programmierkenntnissen des Autors/Programmierers oder von mangelden didaktischen Können. Beispiele müssen immer so einfach wie möglich sein um das Erklärte zu veranschaulichen und nicht künstlich zu verkomplizieren. Versuchs mal mit gratis-Tutorials zB: http://arduino.cc/en/Tutorial/HomePage

Und dann sind wir auch noch da.

Viele Grüße Uwe

Allein die Tatsache, dass in einer Endlosschleife ( void loop ist iirc for( ; ; ) oder while(1) ) eine weitere Endlosschleife ausgeführt wird - in einer Methode, die eh schon LOOP heißt, berechtigt zur direkten Disqualifizierung des Authors.

Wer den Schaden hat .....

Ich kenne das, hatte das gleiche Produkt benutzt. Leg das Buch mal ordentlich zur Seite, hülle den Mantel des Verzeihens darüber und glaube folgender Erkenntnis:

Beisspiele von dieser domain hier und diejenigen, die die IDE mitbringt sind sehr gut geeignet in die Materie einzutauchen. Bei weiteren Fragen Familie google zur Hilfe bitten und wenn es schon ein Buch sein soll, dann vielleicht eines über C und eines über Elektrotechnik.

Was auch nicht schaden soll ist hier einfach mitzulesen.

Essenz: Nicht jedes Lernpaket ist auch ein Kompetenzpaket :D