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