C-løkker

Fra HTX Arduino
Spring til navigation Spring til 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

Programmering
Programmeringsbegreber Initialisering - Sekvens - Algoritme - Hexadecimal - Det Binære Talsystem - HEX-fil - ASCII - Interrupt - Events - Styresystem - Autocomplete - Selvstudie Programmering - Hour Of Code - Stepwise Improvement - Syntaks - Prog-links - Microcontroller - ChatGPT
Grundlæggende C C float - C double - C-løkker - Datatyper - Konstanter - Regnearter - Funktioner - Return - Returværdi - Rekursion - Semikolon
Variabel Typer boolean - byte - int - unsigned int - word - long - unsigned long - short - float - double - char - unsigned char - string - char array - String - object - Array - 2-dimensionelt Array - void
Program-klassikere Polling - State-machine - Trykknap - Forkant - Bagkant - Prel
Arduino Arduino til Programmering - C til Arduino - Programmering Shield - Arduino PC-software - Arduino Udviklingsmiljø - Arduino Pin Library - Funktion - Arduino Seriel - Arduino String - Arduino String Split - Arduino StateChangeDetection - setup() - loop() - Compilerdirektiver - Asynkron kommunikation - millis() - micros() - Scratch for Arduino - Send fra Arduino til Excel - [[]] - [[]]
Processing Grafik i Processing‎ - Keyboard i Processing - Mus i Processing‎ - Tid i Processing‎ - Draw() - Setup() - Tal Input til Processing - Syntaksfarvning - Kommunikation fra Arduino til Processing - Kommunikation fra Processing til Arduino
javaScript Javascript input‎ - Javascript output‎ - Javascript strukturer‎ - Javascript syntaks‎ - Tid i javaScript - Objekt‎ - AJAX
Serverprogrammering PHP - MySQL - Task Scheduler - WeMOS
PIC JAL - [[]]
Scratch for Arduino S4A Installation - S4A programmering - S4A undervisningsforløb - S4A begrænsninger
Program Dokumentation Algoritme - Flowchart - Pseudokode - Datastruktur - Dataabstraktion - Pulsplaner - Program-kommentar - Teori - Test - UML