Arduino: Spach-Referenz: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(24 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="C" style="border: none; background-color: #EFF1C1; font-size:12px">
<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 ausgef
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
¨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. Zus¨atzlich werden die Ein- und Ausg¨ange gesetzt.


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 m¨ussen. In diesem Fall bleibt die Funktion ohne Anweisungen.
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 f¨ur die
alle weiteren Anweisungen und Funktionsaufrufe untergebracht, die im Normalbetrieb für die
gew¨unschte L¨osung ben¨otigt werden.
gewünschte Lösung benötigt werden.


= Funktion =
= Funktion =
Zeile 55: Zeile 54:
== if-Verzweigung ==
== 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.
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>ArduinoSketchStruktur.ino</code><br>
 
'''Quelltext:''' <code>ifelse.ino</code><br>
----
----
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:larger">
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px">
if (Bedingung 1) {
if (Bedingung 1) {
   // Anweisungen 1;
   // Anweisungen 1;
Zeile 65: Zeile 65:
}
}
else {
else {
  // Anweisungen 3;
  // Anweisungen 3;
}
}
</syntaxhighlight>
</syntaxhighlight>
----
----
Siehe auch: [https://www.arduino.cc/reference/de/language/structure/control-structure/else/ Arduino.cc: <code>else</code>]
== switch-case-Verzweigung==
== 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 ==
== 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==
== while-Schleife==
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.&thinsp;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>]


Siehe auch: [https://www.arduino.cc/reference/de/language/structure/control-structure/while/]
= Operatoren =
= Operatoren =


Zeile 80: Zeile 141:
= Bibliotheken =
= Bibliotheken =
== <code>Serial.h</code> ==
== <code>Serial.h</code> ==
'''Quelltext 1:''' <code>ArduinoSketchStruktur.ino</code><br>
'''Quelltext:''' <code>Serial.h</code><br>
----
----
<syntaxhighlight lang="matlab" style="border: none; background-color: #EFF1C1; font-size:larger">
<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()

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