C-løkker

Fra Kommunikation-IT Holstebro HTX
Skift til: navigering, søgning

Ideen med at anvende løkke-strukturer i programmering er at forenkle koden, og undgå at man skal gentage koden for mange gange, så man sparer kodeplds i mikrokontrolleren.

Der er forskellige løkker som hver har deres fordele og ulemper. Beskrivelsen her fremhæver disse egenskaber ved de forskellige løkker.

for-løkken

For-løkken er god til at løbe igennem noget kode et bestemt antal gange, og anvende en variabel der tælles enten op eller ned.

Koden i en for-løkke ser ud som følger:

for (n=1; n<=10; n++) {
   Serial.println(n);
}

Et andet eksempel er vist i arduinoens eksempler ved at hente Fil - Eksempler - Control - ForLoopIteration [1]

Eksemplet bygger et night-rider løbelys med 6 lysdioder. Dette er en del af koden, hvor den med løkken løber alle benene med lysdioder igennem:

  // loop from the lowest pin to the highest:
  for (int thisPin = 2; thisPin < 8; thisPin++) { 
    // turn the pin on:
    digitalWrite(thisPin, HIGH);   
    delay(timer);                  
    // turn the pin off:
    digitalWrite(thisPin, LOW);    
  }

while-løkken

While-løkken er god til at lade noget kode afvikle, mens en bestemt betingelse er opfyldt. Det kan være så længe der modtages fra den serielle port, eller så længe der er en indgang aktiv.

Koden i en while-løkke ser ud som følger:

while (Serial.available()) {
   char inChar = Serial.read();
   Serial.println("Recieved : " + inChar);
}

Et andet eksempel er vist i arduinoens eksempler ved at hente Fil - Eksempler - Control - WhileStatementConditional [2]

Eksemplet foretager en kalibrering af noget analogt, så længe en knap holdes nede. Denne kode er det centrale while-loop:

  // while the button is pressed, take calibration readings:
  while (digitalRead(buttonPin) == HIGH) {
    calibrate(); 
  }

do ... while

Do-while-løkken er god til at lade noget kode fortsætte med at afvikle, så længe en bestemt betingelse er opfyldt. Det kan være at blinke med en lysdiode, indtil en bruger reagerer på et andet input.

Koden i en while-løkke ser ud som følger:

do {
   blinkState = ! blinkState;
   digitalWrite(blinkLED, blinkState);
   delay(100);
} while (! digitalRead(userInput));

At bryde ud af løkken

break

continue

Referencer

  1. Arduinos eksempel på for-løkke
  2. Arduinos eksempel på while-løkke