In diesem Beitrag möchte ich dir die For-Schleife vorstellen und zeigen wie du diese in deine Arduino Programme / Sketche einbindest.
Mit einer For-Schleife kannst du wiederkehrende Operationen in einem Programm wiederholen.
Die verschiedenen Schleifen für die Programmierung in der Arduino IDE habe ich dir bereits im Beitrag Arduino Programmierung: Schleifen vorgestellt. Hier soll es lediglich speziell um die For-Schleife gehen.
formeller Aufbau einer For-Schleife
Eine For-Schleife ist formell in die 3 Bereiche Aufgeteilt:
- Initialisierung,
- Bedingung, sowie
- Increment
Die 3 Bereiche sind jeweils durch ein Semikolon “;” getrennt.
for(Initialisierung;Bedingung;Increment){}
Initialisierung
Wird am Anfang der Schleife ausgeführt. Hier wird zumeist der Datentyp der Variable für den Zähler definiert zbsp. Byte, Short, Integer, Long, Float, Double.
int i = 0; //oder long i = 1L; //oder double i= 1.1d;
Bedingung
Die Bedingung wird bei jedem Durchlauf der Schleife ausgeführt. D.h. der Zähler startet beim Initialen Wert wird durch das Increment erhöht oder verringert und in der Bedingung geprüft.
for(int i=0;i<10;i++){}
Wenn die Bedingung TRUE ist dann wird der Code in der Schleife ausgeführt. Wenn der Wert FALSE ist wird die Schleife abgebrochen.
Die initialisierte Variable steht nach der For-Schleife nicht mehr zur Verfügung!
Increment
Im dritten Bereich der For-Schleife wird die Initiale Variable manipuliert. Wir können diese Variable incrementieren (um einen Wert erhöhen) oder auch decrementieren (um einen Wert verringern).
For-Schleife mit Incrementierter Variable
Das Incrementieren einer Variable bewirkt das diese um einen Wert x erhöht wird. Im normalfall wird dieses mit <<Variablenname>>++ gemacht. Dieses Bewirkt das die Variable um genau den Wert 1 erhöht wird.
for(int i=0;i<10;i++){}
Du kannst die Variable aber auch um einen anderen Wert erhöhen zbsp. um 5.
for(int i=0;i<100;i+5){}
For-Schleife mit Decrementierter Variable
Das Decrementieren einer Variable bewirkt das diese um den Wert x verringert wird. Normalerweise wird die Variable um 1 verringert, dazu schreibt man <<Variablenname>>– im Code.
for(int i=10;i>0;i--){}
Wie beim Incrementieren gezeigt, kannst du auch beim Decrementieren die Schritte um welche die Variable manipuliert werden soll, selber festlegen.
for(int i=100;i>0;i-5){}
Beispiel – Ausgabe von Daten auf der seriellen Schnittstelle
Als Beispiel zur For-Schleife wollen wir Daten auf der seriellen Schnittstelle ausgeben.
Die Daten sind die Fibonacci-Folge also: 1, 2, 3, 5, 8, 13 ….
Ein Wert in der Fibonacci-Folge berechnet sich vereinfacht gesagt, aus der Addition der zwei vorraus gegangen Werte. zbsp. 2 + 3 = 5, 3 + 5 = 8 usw.
Ausgenommen von der Regel ist die Zahl 1 da diese keine vorraus stehenden Werte besitzt.
void setup(){ Serial.begin(9600); } void loop(){ Serial.println("Fibonacci-Folge"); unsigned long zahl1 = 1; unsigned long zahl2 = 2; for(unsigned long i=1;i<=25;i++){ unsigned long temp = zahl1 + zahl2; Serial.println("["+String(i,DEC)+"] "+String(temp, DEC)); zahl1 = zahl2; zahl2 = temp; } delay(2500); }
Quellen
Eine noch ausführlichere Erläuterung zur For-Schleife für die Arduino IDE findest du in der Arduino-Referenz.
Kann die Bedingung ind er FOR-Schleife auch eine Funktion sein? Bzw. das Ergebnis einer Funktion?
Hi,
leider ist das nicht möglich, soweit wie zbsp. Java oder Python ist die Sprache nicht fortgeschritten.
Aber man kann natürlich innerhalb der For-Schleife eine Funktion aufrufen.
Gruß,
Stefan Draeger
Danke für die tolle Arbeit die hier geleistet wurde, hier bekommt man sehr gute Informationen, die sehr nützlich sein können.
Lieben Gruß Mia