InfTech Tutorium 3 Zusatzmaterial

Highlight dieser Woche: Anwendung der Endlosschleife

+Eine kleine Hello World-Einführung in Arduino

Was ist eine Endlosschleife? Das ist eine Schleife, bei der die Abbruchbedingung nie erfüllt und die Schleife for ever and ever ausgeführt wird. Ganz einfach lässt sich solch eine Schleife in C mit while implementieren:

while(1){
  // Anweisungen, die fuer immer ausgefuehrt werden
}

Wie man sieht ist die Bedingung der while-Schleife stets erfüllt.

for(;;){
  // Das Ganze mit for
}

Natürlich funktioniert das auch mit einer for-Schleife, die auf dem ersten Blick völlig ominös erscheint. Was tatsächlich passiert ist, dass in den leeren Stellen ein logisches 'wahr' eingesetzt wird und dadurch auch hier die Bedingung immer wahr ist. Nun fragt man sich warum man ne Endlosschleife überhaupt bauen will?

Eine denkbar einfache Anwendung möchte ich hier kurz vorstellen. Schonmal mit nem Arduino rumgebastelt? Wenn nicht, dann übernimmt der Link (https://www.arduino.cc) die Vorstellungsrunde. Kurz: Es geht um die Software (Programmiersprache: C, C++). Und zwar hat ein neu angelegtes Arduino-Sketch (so wird das Programm genannt) anstelle einer uns bekannten main() Funktion zwei auffällige Funktionen,

void setup(){
}

void loop(){
}

also setup() und loop(). Was mystischerweise vielleicht einen völlig anderen Aufbau von C/C++ Programmen auf der Arduino-Plattform impliziert (das erging mir so), ist tatsächlich eine clevere, funktionale "Abstrahierung", Erleichterung für den Programmierer. Es verbirgt sich nämlich folgendes hinter setup() und loop():

int main(){
  // ... abgekuerzt
  init();
  setup();

  for(;;){
    loop();
    // ... abgekuerzt
  }
}

Eins vorweg, paar Kleinigkeiten habe ich abgekürzt vom Original, so dass das Essentielle besser ersichtlich wird: Natürlich gilt die Festlegung einer main() Funktion für den Programmeinstieg auch für den noch so kleinen Mikrochip, den wir in C programmieren. Die Arduino Plattform blendet aber die main() Funktion aus und versorgt uns dafür mit zwei Funktionen, die wir im Detail implementieren können:

 Das "Hello-World" in Arduino: Die blinkende LED!

Das "Hello-World" in Arduino: Die blinkende LED!

  • void setup(). Die Funktion wird einmal ausgeführt, nämlich sobald der Mikrochip "hochgefahren" ist. Man sagt dem Mikrochip hier 'Hey, nehme mal Pin Nummer 13 als Ausgabepin, damit ich da eine angeschlossene LED blinken kann'
  • void loop(). Und wo kommt die Funktion loop() vor? Genau in der Endlosschleife! Also werden die Befehle, die in loop() stehen stets, immer wieder und für immer ausgeführt. Damit lässt sich nun als sinnvolles Beispiel eine LED blinken, was nichts anderes ist als ich schalte die LED an für ne bestimmte Zeit und in der restlichen Zeit soll sie aus sein. Im Arduino-Syntax dann wie folgt:
// the setup function runs once when you press reset or power the board
void setup() {
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Try this yourself :) Das gute am Arduino ist, dass man den Code direkt per USB-Kabel an den Arduino übertragen kann. Wenn man gerade, rein zufällig keine LED herumliegen hat, macht es nichts, denn am Pin 13 sitzt schon eine LED auf der Arduino-Platine.

Frank F. Zheng

10119

Hi there, it's Frank from THE VFD COLLECTIVE.

I'm a 20 year old electrical engineer student currently living in Berlin, Germany. This page, THE VFD COLLECTIVE was brought into life to promote my VFD tube digital clock (Project OpenVFD) and let everyone who enjoy doing creative nerd stuff with VFD displays and tubes to share their work.

In my free time, I'm in love with traveling, photography, hiking in the mountains, vegan food and great coffee. At home, you'll either find me learning for college or making music. Playing the piano, guitar and singing is so much fun.

Peace :)