...
Um Programme für das Arduino zu schreiben, benutzen eine verwendet man eine integrierte Programmierumgebung (IDE), welche von David Mellis entwickelt wurde und sich stark an Processing orientiert. Dies macht uns den Einstieg besonders einfach – es gibt jedoch einige Unterschiede, wenn wir für einen Mikrocontroller programmieren. Für Arduino verwenden wir eine vereinfachte Variante von C/C++. Da Arduino auf Processing aufbaut sieht die Oberfläche und die Syntax beider Programme sehr ähnlich aus. Auch die Programmierumgebung sieht sehr ähnlich aus.
Integrierte Programmierumgebung (IDE)
Grundstruktur
Die Grundstruktur eines Programms beinhaltet immer die Funktion setup() und loop(). Dabei wird setup() nur einmal beim Start des Programms (entweder nach dem Übertragen auf das Board oder nach Drücken des Reset-Tasters) aufgerufen. In dieser Funktion setzt man die Pins als Ein- oder Ausgänge, aktiviert die Serielle Schnittstelle
...
oder initialisiert externe Libraries. Die Funktion loop() wird durchgehend durchlaufen, solange das Arduino eingeschaltet ist.
...
Code Block | ||||
---|---|---|---|---|
|
...
|
...
#define LED_PIN 13 int counter = 0; void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { |
...
...
digitalWrite(LED_PIN, HIGH);
delay(1000);
digitalWrite(LED_PIN, LOW);
delay(1000);
counter++;
} |
Variablen
int (byte, int, uint, long, ulong)
Ganzzahlige Variablen
z.B. int x = 22;
float (double)
Fliesskomma Variablen
z.B. int float y = 1.234;
char
Zeichen
z.B. char z = “a”;
...
boolean
Schaltvariable
z.B. boolean state = false;
Operatoren
...
Arithmetische Operatoren (+,-,*,/,=,%)
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
x = 3+2; // x = 5 |
...
y = 2-1; // y = 1 |
...
z = 5*2; // z = 10 |
...
i = 10/2; // i = 5 |
...
r = 9%5; // r = 4 |
Vergleichende Operatoren (,=,==,!=)
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
if( |
...
100 != 120) // Bedingung { // Auszuführende Aktion } |
...
Boolsche Operatoren (&&,||,!)
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
if(digitalRead(2) == HIGH) // Bedingung
{
// Auszuführende Aktion
} |
...
Zusammengesetzte Operatoren (++,–,+=,-=,*=,/=)
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
x++ // x um eins erhöhen |
...
y– // y um eins verringern |
...
z+=2 // z um zwei erhöhen |
...
i-=5 // i um fünf verringern |
Kontroller
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
if(x>120)
{
// Aktion wenn x grösser als 120
} |
...
Code Block | |
---|---|
|
...
|
| ||||
if(x>120)
{
// Aktion wenn x grösser als 120
}
else
{
// Aktion wenn x kleiner als, oder genau 120
} |
Code Block |
---|
...
|
...
|
...
| ||||
for(int i=0; i<=255; i++)
{
// Setzt i von 0 bis 255
} |
...
switch case
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
switch(var) { case 1: // Aktion wenn var 1 entspricht break; case 2: // Aktion wenn var 2 entspricht break; default: // Aktion wenn var weder 1 noch 2 entspricht } |
...
Code Block | |
---|---|
|
...
|
| ||||
var = 0;
while(var<120)
{
// Aktion welche sich 120 Mal wiederholt
var++;
} |
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
for(int i=0; i<200; i++)
{
digitalWrite(5,i);
sensorWert = analogRead(0);
if(sensorWert>200)
{
i = 0; // Schleife verlassen
break;
}
delay(100);
} |
...
return
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
int checkSensor()
{
if(analogRead>200)
{
return 1; // checkSensor ist nun 1
}
else
{
return 0; // checkSensor ist nun 0
}
} |