Arduino: Spach-Referenz: Unterschied zwischen den Versionen
(31 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 14: | Zeile 14: | ||
'''Quelltext 1:''' <code>ArduinoSketchStruktur.ino</code><br> | '''Quelltext 1:''' <code>ArduinoSketchStruktur.ino</code><br> | ||
---- | ---- | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px"> | ||
void setup ( ) // Programmstart | void setup ( ) // Programmstart | ||
{ | { | ||
// Anweisungen | // Anweisungen | ||
} | } | ||
void loop ( ) // Hauptschleife | void loop ( ) // Hauptschleife | ||
{ | { | ||
// Anweisungen | // Anweisungen | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
---- | ---- | ||
Die Setup-Funktion wird einmalig beim Start des Arduino-Boards oder nach einem Reset | 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. | |||
der seriellen Schnittstelle vorgenommen. | |||
Die Setup-Funktion ist zwingend notwendig und muss immer vorhanden sein, auch wenn keine | Die Setup-Funktion ist zwingend notwendig und muss immer vorhanden sein, auch wenn keine | ||
Deklarationen erfolgen | 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 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 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 | die Loop-Funktion durchlaufen – wie der Name schon sagt, als endlose Schleife. Im Loop werden | ||
alle weiteren Anweisungen und Funktionsaufrufe untergebracht, die im Normalbetrieb | 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 <code>if</code> 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 <code>else</code>-Anweisung ist optional. | |||
== | '''Quelltext:''' <code>ifelse.ino</code><br> | ||
---- | |||
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px"> | |||
if (Bedingung 1) { | |||
// Anweisungen 1; | |||
} | |||
else if (Bedingung 2) { | |||
// Anweisungen 2; | |||
} | |||
else { | |||
// Anweisungen 3; | |||
} | |||
</syntaxhighlight> | |||
---- | |||
Siehe auch: [https://www.arduino.cc/reference/de/language/structure/control-structure/else/ Arduino.cc: <code>else</code>] | |||
== 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 <code>switch..case</code> alle | |||
Statements aus, bis ein <code>break</code>-Keywort auftaucht oder das <code>switch..case</code> zu Ende ist. | |||
'''Quelltext:''' <code>switchcase.ino</code><br> | |||
---- | |||
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px"> | |||
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 | |||
} | |||
</syntaxhighlight> | |||
---- | |||
Siehe auch: [https://www.arduino.cc/reference/de/language/structure/control-structure/switchcase/ Arduino.cc: <code>switch..case</code>] | |||
== for-Schleife == | |||
Das <code>for</code>-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:''' <code>forSchleife.ino</code><br> | |||
---- | |||
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px"> | |||
for (Initialisierung; Bedingung ; Inkrementierung ) { | |||
// Anweisungen; | |||
} | |||
</syntaxhighlight> | |||
---- | |||
Siehe auch: [https://www.arduino.cc/reference/de/language/structure/control-structure/for/ Arduino.cc: <code>for</code>] | |||
== | == while-Schleife== | ||
=== <code>Serial.h</code> == | Eine while-Schleife läuft solange weiter (eventuell auch unendlich), bis die Bedingung in den | ||
< | Klammern () <code>false</code> 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:''' <code>whileSchleife.ino</code><br> | |||
---- | |||
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px"> | |||
while (Bedingung) { | |||
// Anweisungen; | |||
} | |||
</syntaxhighlight> | |||
---- | |||
Siehe auch: [https://www.arduino.cc/reference/de/language/structure/control-structure/while/ Arduino.cc: <code>while</code>] | |||
= Operatoren = | |||
= Eingebaute Funktionen = | |||
= Bibliotheken = | |||
== <code>Serial.h</code> == | |||
'''Quelltext:''' <code>Serial.h</code><br> | |||
---- | |||
<syntaxhighlight lang="matlab" style="border: none; background-color: #EFF1C1; font-size:14px"> | |||
begin(long Baudrate) // bis 115200 Baud | begin(long Baudrate) // bis 115200 Baud | ||
end() | end() | ||
Zeile 73: | Zeile 156: | ||
write(byte * data, size) | write(byte * data, size) | ||
SerialEvent() // wenn Daten fertig | SerialEvent() // wenn Daten fertig | ||
</ | </syntaxhighlight> | ||
---- | |||
== Weiterführende Links == | == Weiterführende Links == |
Aktuelle Version vom 5. Juli 2023, 11:40 Uhr
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