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; } }