LBotics.at

Arduino Programme werden in der Programmiersprache C geschrieben.

In dieser Sprache gelten die folgenden Festlegungen:

  • Jede Anweisung wird mit einem Strichpunkt beendet.
  • Im gesamten Programmcode ist auf Groß- und Kleinschreibung zu achten.
  • Codezeilen werden in Programmierstrukturen wie Schleifen, Entscheidungsabfragen, ... mit geschwungenen Klammern { } zu Blöcken zusammengefasst und es ist üblich, den Code zwischen geschwungenen Klammern zur bessern Übersichtlichkeit eingerückt zu schreiben.
  • Bei Schlüsselwörtern handelt es sich um vordefinierte reservierte Bezeichner, die eine besondere Bedeutung haben, wie z. B. include, int, if, while, break, return, ... Diese dürfen nicht als Namen für Variablen verwendet werden.
  • Ergänzende Informationen, die nicht zum Programmcode gehören, werden als Kommentare bezeichnet und hinter zweifachen // geschrieben
Variablentypen

Zum Speichern von Werten kommen Variablen zum Einsatz. Für ganzzahlige Werte werden Variablen vom Typ Integer verwendet. Zum Ablegen von Dezimalzahlen kommen Gleitkomma-Typen zum Einsatz.

Variablentypen für ganze Zahlen
uint8_t unsigned integer 8 bit Zahlen zwischen 0 und 255
int8_t signed integer 8 bit Zahlen zwischen -128 und 128
uint16_t unsigned integer 16 bit Zahlen zwischen 0 und 65536
int16_t signed integer 16 bit Zahlen zwischen -32768 und 32768
int signed integer 16 bit Zahlen zwischen -32768 und 32768 (Arduino-spezifisch)
Variablentyp für Dezimalzahlen
float Genauigkeit: 6 - 7 Stellen Zahlen zwischen -3.4028235 * 1038 und 3.4028235 * 1038
Definition einer Variable

Die Definition einer Variable erfolgt nach dem Schema: typ Variablenname;

Bei der Vergabe und Verwendung von Variablennamen ist zu beachten:

  • Im Namen einer Variable dürfen keine Sonderzeichen und keine Leerzeichen verwendet werden.
  • Das einzig erlaubte Zeichen um Variablennamen besser lesbar zu machen ist der Unterstrich.
  • Bei Variblennamen ist auf Groß- und Kleinschreibung zu achten.
  • Reservierte Wörter, wie if, else, for, include, while, ... dürfen nicht als Variablennamen verwendet werden.

Beispiele

// Definition einer Integervariable, die Werte zwischen 0 und 255 aufnehmen kann
uint8_t Meine_Ganze_Zahl;
// Definition einer Gleitkommavariable, der auch bereits bei der Definition ein Wert zugewiesen wird
float Meine_Dezimalzahl = 1432.3452;
Rechenoperationen

Die folgenden Operatoren werden in C zum Rechnen mit Variablen und Zahlen verwendet.

= zuweisendes "ist gleich"
+ Addition
- Subtraktion
* Multiplikation
/ Division
% Modulo (Rest einer Division)

Das zuweisende "ist gleich"

Das einfache = wird als zuweisendes "ist gleich" bezeichnet. Das zuweisende "ist gleich" wirkt immer von RECHTS nach LINKS!

a = 5; Der Variable auf der linken Seite wird der Wert auf der rechten Seite zugewiesen.

Beispiel

Es werden drei Variablen vom Typ uint8_t definiert. Den beiden Variablen a und b werden bei der Definition die Werte 3 und 5 zugewiesen. In der letzten Zeile wird der Variablen c das Ergebnis der Addition von a und b zugewiesen.

uint8_t a = 3;
uint8_t b = 5;
uint8_t c;
c = a + b;
Entscheidungsabfragen

Mit einer Entscheidungsabfrage kann der weitere Ablauf eines Programms gesteuert werden. Zunächst wird eine Bedingung angegeben, die überprüft wird. Es folgt ein Block mit Anweisungen, die ausgeführt werden sollen, wenn die Bedingung erfüllt ist.

if (Bedingung)
{
Anweisung 1;
Anweisung 2;
...
}

Auch ist es möglich, einen weiteren Block von Anweisungen festzulegen, die ausgefüllt werden sollen, wenn die Bedingung nicht erfüllt ist.

if (Bedingung)
{
Anweisung 1;
Anweisung 2;
...
}
else
{
Anweisung 1;
Anweisung 2;
...
}
Vergleichsoperatoren für Bedingungen

In einer Bedingung werden zwei oder mehrere Werte miteinander verglichen. Meist soll überprüft werden, ob eine Variable einen bestimmten Wert hat. Für diese Überprüfung können in den Bedingungen einer if-Abfrage und einer while-Schleife folgende Operatoren verwendet werden:

if (a==1) {...} == vergleichendes "ist gleich" Hat die Variable a den Wert 1?
if (a!=1) {...} != ungleich Ist der Wert der Variable a ungleich 1?
if (a<4) {...} < kleiner Ist der Wert der Variable a kleiner als 4?
if (a>20) {...} > größer Ist der Wert der Variable a größer als 20?
if (a<=10) {...}  <= kleiner gleich  Ist der Wert der Variable a kleiner oder gleich 10?
if (a>=25) {...} >= größer gleich Ist der Wert der Variable a größer oder gleich 25?
 
Verknüpfungsoperatoren für Bedingungen

Sollen in einer Bedingung mehrere Bedingungen verknüpft werden, so gibt es dafür die beiden Operatoren && und || für das logische UND und das logische ODER.

Bei einer Verknüpfung mit && - dem logischen UND - ist die Gesamtbedingung erfüllt, wenn beide Bedingungen erfüllt sind.

Bei einer Verknüpfung mit || - dem logischen ODER - gilt die Gesamtbedingung dann als erfüllt, wenn entweder die eine, die andere oder beide Bedingungen erfüllt sind.

if ((a==1)&&(b!=2)) {...} Hat die Variable a den Wert 1 UND b einen Wert ungleich 2?
if ((a==1)||(b==1)) {...}  Hat die Variable a den Wert 1 ODER b den Wert 1, oder sind beide Bedingungen erfüllt?

 

Schleifen

Schleifen werden in Programmen verwendet, wenn ein Block von Anweisungen mehrmals hintereinander ausgeführt werden soll.

Für eine Schleife wird benötigt:

1. Definition einer Zählvariable

2. Laufzeitbedingung (wie oft wird der Code in der Schleife wiederholt ausgeführt, abhängig von der Zählvariable)

3. Änderung der Zählvariable nach einem Schleifendurchlauf

Die while-Schleife

Die while-Schleife wird verwendet, wenn Anweisungen so lange wiederholt ausgeführt werden sollen, solange eine Bedingung erfüllt ist. Zunächst muss eine Zählvariable definiert und dieser ein Startwert  zugewiesen werden. Nach einem Schleifendurchlauf muss festgelegt werden, wie sich die Zählvariable ändert.

int i = 0;
while (i<100)
{
  Anweisung 1;
Anweisung 2;
...
i = i + 1;
}

Diese Schleife läuft, solange der Wert der Variable i kleiner als 100 ist. Nach jedem Schleifendurchlauf wird der Wert der Variable i um eins erhöht. Für die Bedingung einer while-Schleife gelten die gleichen Vorgaben wie für die if-Abfrage, es sind die selben Vergleichsoperatoren zu verwenden.

Die for-Schleife

Bei einer for-Schleife werden die drei Informationen für das Laufen der Schleife gleich direkt hinter den Schlüsselwort for festgelegt.

for (int i = 0; i < 100; i++)
{
  Anweisung 1;
Anweisung 2;
. . .
}

Wie bei der while-Schleife wird festgelegt:

1. int i = 0; Definition der Zählvariable und zuweisen des Startwerts.

2. i < 100; Die Laufzeitbedingung der Schleife, diese läuft, solange i kleiner als 100 ist.

3. i++ Dies ist eine Kursschreibweise für i = i + 1 Damit wird festgelegt, dass die Zählvariable i nach einem Schleifendurchlauf um eins erhöht wird.