Übersicht über C/C++
Für Arduino werden wir in C/C++ programmieren. Da Arduino auf Processing aufbaut sieht die Oberfläche und die Syntax beider Programme sehr ähnlich aus. Es gibt jedoch einige Unterschiede, welche wir im Laufe des Workshops beleuchten werden. Ihr solltet schon über einige Grundkenntnisse der Programmierung verfügen. Eine Komplette Referenz für Arduino erhaltet ihr hier.
Übersicht:
// Hier werden globale Variablen deklariert void setup() { // Die Setup Funktion wird genau einmal am Anfang ausgeführt } void loop() { // Die Funktion Loop wird permanent ausgeführt }
Variablen:
int (byte, int, uint, long, ulong)
Ganzzahlige Variablen
z.B. int x = 22;
float (double)
Fliesskomma Variablen
z.B. int y = 1.234;
char
Zeichen
z.B. char z = “a”;
String
Abfolgen von Zeichen
z.B. String testString = “Arduino”;
boolean
Schaltvariable
z.B. boolean state = false;
Operatoren:
Arithmetische Operatoren (+,-,*,/,=,%)
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 (,=,==,!=)
if(x<120) // Bedingung { // Auszuführende Aktion }
Boolsche Operatoren (&&,||,!)
if(digitalRead(2) == HIGH) // Bedingung { // Auszuführende Aktion }
Zusammengesetzte Operatoren (++,–,+=,-=,*=,/=)
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:
if…
if(x>120) { // Aktion wenn x grösser als 120 }
if…else
if(x>120) { // Aktion wenn x grösser als 120 } else { // Aktion wenn x kleiner als, oder genau 120 }
for
for(int i=0; i<=255; i++) { // Setzt i von 0 bis 255 }
switch case
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 }
while
var = 0; while(var<120) { // Aktion welche sich 120 Mal wiederholt var++; }
break
for(int i=0; i<200; i++) { digitalWrite(5,i); sensorWert = analogRead(0); if(sensorWert>200) { i = 0; // Schleife verlassen break; } delay(100); }
return
int checkSensor() { if(analogRead>200) { return 1; // checkSensor ist nun 1 } else { return 0; // checkSensor ist nun 0 } }