Arduino Befehlsübersicht

Programmstruktur

Ein Arduino Programm besteht immer aus den zwei Funktionen
setup(): Diese Funktion wird einmal ausgeführt. Hier können die Angaben gemacht werden, welche die Konfiguration des Programmes vornimmt.
loop(): In dieser Funktion wird das eigentliche Programm erstellt. Diese Funktion wird immer wieder ausgeführt.

void setup(){
}

void loop(){
}


Vom Problem zum Algorithmus

  1. Verstehen der Problemstellung
  2. Entwerfen einer Lösung
  3. Erstellen eines Pseudocode
  4. Erstellen eines Struktogrammes

Struktogramm

Sequenz

Block

einfache Selektion

bedingte Anweisung

mehrfache Selektion

Schleife
(kopfgesteuert)

Schleife
(fussgesteuert)


Darstellung von Daten

Ein Datentyp spezifiziert, wie ein bestimmtes Bitmuster interpretiert wird.
Ein Bitmuster (0010 1001) kann als:
  • Ganze Zahl
  • Buchstabe
  • Fliesskommazahl
  • etc.
interpretiert werden.
Daher werden verschiedene Datentypen benötigt.

Datentyp
Wertbereich / Speicherbedarf
Erklärungen
byte
0 bis 255
Speicherbedarf: 1 Byte
Niedrige Werte (und entsprechend kleiner Speicherbedarf
int
-32'768 bis 32'767
Speicherbedarf: 2 Byte
Ganzzahlige Werte für Zähler, Schleifen oder Messwerte ohne Kommastellen
long
-2'147'483'648 bis 2'147'483'647
Speicherbedarf: 4 Byte
Ganzzahlige Zahlen mit hohen Werten
float
-3.4028235E+38 bis 3.4028235E+38
Werte mit Kommastellen
double
Entspricht dem Datentyp float.
Ist jedoch genauer (mehr Kommastellen)
char
-238 bis 127
Speicherbedarf: 1 Byte
Wert für die Speicherung eines Zeichens
boolean
True/False
Speicherbedarf: 1 Byte
Wert für 1/0, Ja/Nein oder Ein/Aus, also Status EIN oder AUS
string
Länge je nach Definition
Speicherbedarf: je nach Bedarf
Zeichenketten wie Texte oder mehrere Zeichen.

Kontrollstrukturen

Kontrollstrukturen werden verwendet, um den Ablauf eines Programms zu steuern.

Die drei grundlegenden Kontrollstrukturen sind:
  • Sequenz
  • Selektion
  • Iteration

Sequenz

Eine Sequenz ist eine zeitlich geordnete Folge von Anweisungen

Beispiel:
digitalWrite(led,Pin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);

Flussdiagramm
Struktogramm
Arduino Code


Anweisung_1;
Anweisung_2;

Block

Oft erfordert die Syntax genau eine einzelne Anweisung. In solchen Fällen können mehrere Anweisungen in einem Block als eine Anweisung zusammen gefasst werden. Ein Block ist syntaktisch eine einzelne Anweisung.

Selektion

Bedingte Anweisung

Flussdiagramm
Struktogramm
Arduino Code



Bedingung:
0 = false, falsch, nein
1 = true, wahr, ja (ungleich 0)

Einfache Alternative

Flussdiagramm
Struktogramm
Arduino Code



Mehrfache Alternative

Flussdiagramm
Struktogramm
Arduino Code



switch-case
Flussdiagramm
Struktogramm
Arduino Code




Iterationen

Wiederholung mit vorheriger Prüfung (kopfgesteuerte Schleifen)

while-Schleife

Flussdiagramm
Struktogramm
Arduino Code



for-Schleife

Flussdiagramm
Struktogramm
Arduino Code




Vergleich der while- mit der for-Schleife

do - while

Wiederholung mit nachfolgender Prüfung (fussgesteuerte Schleife)
Flussdiagramm
Struktogramm
Arduino - Code



Arduino spezifische Funktionen

Digitaler Input / Output

Werden verwendet um ein digitales Signal auszugeben
void pinMode(pin, mode)
Mit pinMode kann ein pin als Input oder Output definiert werden.
pin: Nummer des Arduino-Pin
mode: Es ist möglich den Modus auf INPUT oder OUTPUT zu setzen

Soll nun am zuvor definierten Ausgang ein Signal geschrieben werden
void digitalWrite(pin, value)
pin: Nummer des Arduino-Pin
value: HIGH (1) oder LOW(0)

Digitalen Wert lesen
int digitalRead(pin)
pin: Nummer des Arduino-Pin
Return-Wert: HIGH (1) oder LOW (0)

Beispiel:
int ledPin = 13;​
int inPin = 4;​
void setup()​
{​
pinMode(ledPin, OUTPUT);​
pinMode(inPin, INPUT);​
}​
void loop()​
{​
int value = digitalRead(inPin);​
digitalWrite(ledPin, value);​
}

Analoge Signale lesen / ausgeben

Lesen eines analogen Signals

Spannungsreferenz für analog Input setzen
void analogReference(type)
type: DEFAULT -> 5V; INTERNAL -> 1.1 Volt; EXTERNAL -> Referenzspannung von 0 - 5V an PIN AREF

Analogwert lesen
int analogRead(pin)
pin: Nummer des analogen InputPin (0-5); Arduino A0-A5
Returnwert: int 0-1023 (10 Bit)

Der Arduino besitzt einen 10 Bit Analog/Digital Wandler. Somit kann die Eingangsspannung durch 1024 pro bit gemessen Werden. (4.88mV)

Schreiben eines analogen Signals

PWM Wert Schreiben
void analogWrite(pin, pwm)
pin: Nummer des analogen OutputPin (0-5); Arduino A0-A5
pwm: PWM-Wert
analogWrite(5, 64);
Der PWM Wert entspricht dann der entsprechenden Pulsdauer
PWM-Wert
Tastgrad
Grafik
0
0%

64
25%

128
50%

191
75%

255
100%


Operatoren

Einstellige (unäre) arithmetische Operatoren
Operator
Beschreibung
+A
positiver Vorzeichenoperator
-A
negativer Vorzeichenoperator
A++
Postfix-Inkrementoperator
++A
Präfix-Inkrementoperator
A--
Postfix-Dekrementoperator
--A
Präfix-Dekrementoperator
Zweistellige (binäre) arithmetische Operatoren
Operator
Beschreibung
A + B
Additionsoperator
A - B
Subtraktionsoperator
A * B
Multiplikationsoperator
A / B
Divisionsoperator
A % B
Modulooperator (nur für ganzzahlige Typen)
Bestimmt den Rest einer ganzzahligen Division
Zuweisungsoperator
Operator
Beschreibung
A = B
Zuweisungsoperator
Vergleichsoperatoren
Operator
Beschreibung
A == B
Gleichheitsoperator
A!=B
Ungleichheitsoperator
A > B
Grösseroperator
A < B
Kleineroperator
A >= B
Grösser-Gleichoperator
A<=B
Kleiner-Gleichoperator
Logische Operatoren
Operator
Beschreibung
Wahrheitstabelle
A && B
Logisch UND

A || B
Logisch ODER

!A
Logisch Nicht

Bit-Operatoren
Operator
Beschreibung
A & B
Bitweises UND
A | B
Bitweises ODER
~A
Bitweises NICHT
A^B
Bitweises exklusives ODER (XOR)
Schiebe Operatoren
Operator
Beschreibung
A >> n
Rechts-Shift um n Bits
Entspricht einer Division durch 2er-Potenz
A << n
Links-Shift um n Bits
Entspricht einer Multiplikation mit 2er-Potenz

Funktionen

Eine Funktion ist eine Zusammenfassung von Anweisungen mit einem eigenen Namen. Innerhalt einer Funktion kann ein Problem gelöst werden, welches mehrfach im Programm auftritt. Durch das Aufrufen der entsprechenden Funktion wird der darin enthaltene Programmcode ausgeführt. Somit kann an einer Stelle im Programm das Problem gelöst werden. Dies erleichtert auch zu einem späteren Zeitpunkt die Wartung des Programmes

Funktionsdefinition

Die Funktionsdefinition definiert wie der Name sagt, die Definition. Es werden folgende Informationen definiert:
  • Funktionskopf bestehend aus Rückgabetyp, Funktionsname und Parameterliste
    • Rückgabetyp: Dieser Datentyp wird von der Funktion als Antwort an den Aufrufenden zurück gegeben. Soll eine Funktion keinen Wert zurück geben, wird dies mit dem Schlüsselwort void angezeigt z.B. void linie()
    • Funktionsname: Bezeichnung der Funktion
    • Parameterliste: Eine Liste von Werten mit denen in der Funktion gearbeitet werden soll
  • Funktionsrumpf
Rückgabetyp Funktionsmae(Parameterliste)
{
Funktionsrumpf
}

Beispiel einer Funktion:
int ggT(int zahl1, int zahl2)​
{ ​
while (zahl1 != zahl2)​
{​
if (zahl1 < zahl2) ​
zahl2 = zahl2 – zahl1;​
else​
zahl1 = zahl1 – zahl2; ​
}​
return zahl1;​
}​

Funktionsaufruf

Der Funktionsaufruf ruf die zuvor definierte Funktion auf.
Der Funktionsaufruf besteht aus dem Funktionsnamen und der Parameterliste. An der Stelle des Funktionsaufrufes wird anschliessend das Resultat (Rückgabetyp) der Funktion, angegeben.

int gTeiler = ggt(5, 7);
Das Resultat der Funktion ggt wird anschliessen in die Variable gTeiler gespeichert und kann für die weitere Verarbeitung eingesetzt werden. Wenn eine Funktion keine Rückgabe.

Beispiel einer Funktion ohne Parameter

Beispiel einer Funktion mit Parametern