Arduino: Spach-Referenz

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Prof. Dr.-Ing. Schneider

Programmstruktur

Zum Erlernen der grundlegenden Programmstrukturen, schauen Sie bitte in Ihre Vorlesungsunterlagen und in das begleitende Lehrbuch [1, S. 78 ff.].

Siehe auch: https://www.arduino.cc/reference/de/

Die Struktur eines Arduino-Programms teilt sich in zwei Bereiche auf: setup() und loop() (vgl. Quelltext 1).

Quelltext 1: ArduinoSketchStruktur.ino


void setup ( ) // Programmstart
{
  // Anweisungen
}
void loop ( )  // Hauptschleife
{
  // Anweisungen
}

Die Setup-Funktion wird einmalig beim Start des Arduino-Boards oder nach einem Reset ausgefüuhrt. In dieser Funktion werden Grundeinstellungen wie Variablendeklarationen oder die Konfiguration der seriellen Schnittstelle vorgenommen. Zusätzlich werden die Ein- und Ausgänge gesetzt.

Die Setup-Funktion ist zwingend notwendig und muss immer vorhanden sein, auch wenn keine Deklarationen erfolgen müssen. In diesem Fall bleibt die Funktion ohne Anweisungen.

Die Loop-Funktion ist der zweite Bereich der Grundstruktur eines Arduino-Programms und hat die Aufgabe eines Hauptprogramms. Nach dem einmaligen Durchlaufen der Setup-Funktion wird die Loop-Funktion durchlaufen – wie der Name schon sagt, als endlose Schleife. Im Loop werden alle weiteren Anweisungen und Funktionsaufrufe untergebracht, die im Normalbetrieb für die gewünschte Lösung benötigt werden.

Funktion

Konventionen

Klammern

Semikolon

Kommentare

Header

Datentypen

Datentypenkonvertierung

Variablen, Konstanten, Arrays und Daten

Kontrollstrukturen

if-Verzweigung

Mit der if-Verzweigung werden in Programmen Entscheidungen gefällt. An if muss eine Frage anschließen, die als Ausdruck, der in Klammern eingeschlossen ist, angegeben wird. Wenn der Ausdruck wahr ist, wird alles Nachfolgende ausgef¨uhrt. Wenn er falsch ist, wird mit dem nächsten Code-Block fortgefahren. Die else-Anweisung ist optional.

Quelltext: ifelse.ino


if (Bedingung 1) {
   // Anweisungen 1;
}
else if (Bedingung 2) {
   // Anweisungen 2;
}
else {
   // Anweisungen 3;
}

Siehe auch: Arduino.cc: else

switch-case-Verzweigung

Wie auch if-Statements, erlaubt es auch switch case, dass abhängig von der Bedingung in verschiedenen Situationen unterschiedlicher Code ausgeführt wird. Im Detail vergleicht switch case die Variablenwerte mit denen in den case-Statements. Wenn ein passendes case-Statement gefunden wird, so wird der Code in diesem case-Statement ausgeführt.

Das break-Keywort beendet das switch case-Statement und wird üblicherweise am Ende jedes case-Statements verwendet. Wenn kein break-Keywort verwendet wird, führt switch..case alle Statements aus, bis ein break-Keywort auftaucht oder das switch..case zu Ende ist.

Quelltext: switchcase.ino


switch (var) {
  case label 1 :
    // Anweisungen 1;
    break;
  case label 2 :
    // Anweisungen 2;
    break;
  default:
    // Anweisungen 3;
    break;            // Wird nicht benötigt, wenn Anweisungen vorhanden sind
}


Siehe auch: Arduino.cc: switch..case

for-Schleife

Das for-Statement wiederholt die in Klammern nachfolgenden Anweisungen. Meistens wird eine Z¨ahlervariable verwendet, welche hochgez¨ahlt wird und die Schleife irgendwann beendet. Das for- Statement wird h¨aufig zur Iteration ¨uber Arrays oder Listen von Daten oder Pins verwendet.

Quelltext: forSchleife.ino


for (Initialisierung; Bedingung ; Inkrementierung ) {
  // Anweisungen;
}

Siehe auch: Arduino.cc: for

while-Schleife

Eine while-Schleife läuft solange weiter (eventuell auch unendlich), bis die Bedingung in den Klammern () false wird. Wenn die Variable in der Schleife sich nie ändert, läuft die Schleife unendlich. Dies kann z. B. durch das Hochzählen einer Variable oder das Lesen eines Sensorwertes erfolgen.


Quelltext: whileSchleife.ino


while (Bedingung) {
  // Anweisungen;
}

Siehe auch: Arduino.cc: while

Operatoren

Eingebaute Funktionen

Bibliotheken

Serial.h

Quelltext: Serial.h


begin(long Baudrate)            // bis 115200 Baud
end()
int available()                 // Anzahl empfangener Bytes
int read()                      // -1 wenn keine Daten
int peek()                      // Lesen ohne den Puffer zu löschen
flush()                         // Puffer löschen
print(data)
println(data)                   // inkl. Zeilenumbruch
write(byte)
write(char * string)
write(byte * data, size)
SerialEvent()                   // wenn Daten fertig

Weiterführende Links

Literatur

[1] Brühlmann, T.: Arduino Praxiseinstieg. Heidelberg: mitp-Verlag, 2. Auflage 2012. ISBN: 978-3-8266-9116-4



→ zurück zum Hauptartikel: Arduino UNO