057 slingor loop
Snart kommer samma slingor med funktionen loop() som med while- och for-slingor.
Men först ett annat exempel som visar på hur funktionen loop() fungerar.
Flödesdiagram
Exempel på evighetsprogram
// global variabel // finns i setup och loop int i = 1;
void setup() { Serial.begin(9600); }
// funktionen loop anropas om och om igen av Arduinon void loop() { Serial.println(i); i = i + 1; }
Utskriften blir:
1 2 3 ... 32 766 32 767 (största möjliga int) -32 768 (hoppar till minsta) -32 767 -32 766 ... -1 0 1 2 ...
Anledningen till att -32 768 kommer efter 32 767 är att de som gjort programmeringsspråket C har bestämt att det ska vara så.
För att få stopp på utskriften kan man använda sig av en if-sats och bara skriva ut i som är mindre än 4.
Skriv ut 1, 2, 3
Observera att flödesschemat ser nästa lika dant ut som för while-slingan eller for-slingan. Nu leder dock pilen med nej tillbaka till frågan.
// global variabel // finns i setup och loop int i = 1;
void setup() { Serial.begin(9600); }
// skriv ut 1, 2, 3 // funktionen loop anropas om och om igen av Arduinon void loop() { if (i < 4) { Serial.println(i); i = i + 1; } }
Jämför med koden för while.
Skriv ut 3, 5, 7
// global variabel // finns i setup och loop int i = 3;
void setup() { Serial.begin(9600); }
// skriv ut 3, 5, 7 // funktionen loop anropas om och om igen av Arduinon void loop() { if (i < 8) { Serial.println(i); // öka med två i = i + 2; } }
Skriv ut 10, 7, 4, 1
// global variabel // finns i setup och loop int i = 10;
void setup() { Serial.begin(9600); }
// skriv ut 10, 7, 4, 1 // funktionen loop anropas om och om igen av Arduinon void loop() { if (i > 0) { Serial.println(i); // minska med 3 i = i - 3; } }