Variablen in Aktion

Header Arduino programmieren
Lektion
Downloads

Als nächstes baust du dir einen Zähler im Seriellen Monitor, der beginnend bei Eins jede Sekunde eins hoch zählt.

Zähler im Seriellen Monitor

Schauen wir uns zunächst an, wie du eine Variable für ganze Zahlen deklarierst. Hierfür benötigst du den Variablentyp int – was übrigens für integer, also Ganzzahl steht. Angenommen die Variable soll zahl heißen und zunächst den Wert 1 besitzen:

int zahl = 1;

Das war einfach. Du fragst dich jedoch vielleicht, an welcher die Stelle im Sketch diese Zeile soll – und hier kommt ein weiterer wichtiger Aspekt von Variablen ins Spiel: Scope.

Globale und lokale Variablen

Prinzipiell gibt es zwei Zustände, die Variablen hinsichtlich ihres Scopes einnehmen können: global und lokal. Global bedeutet einfach gesagt, dass die Variable für alle Funktionen im Sketch zur Verfügung steht und auch dort verändert werden kann. Lokale Variablen können hingegen nur in der Funktion verwendet werden, in der sie deklariert wurden – und auch nur dort gelesen und verändert werden.

___STEADY_PAYWALL___

Zwei dieser Funktionen kennst du ja bereits aus jedem Sketch, den du neu anlegst: void setup() und void loop(). Würdest du die Variable nun in der Setup-Funktion anlegen, wäre sie auch nur dort verfügbar, da sie lokal wäre:

void setup() {
  int zahl = 1;
  Serial.begin(9600);
}

void loop() {
  Serial.println(zahl);
}

Das bedeutet konkret, dass der Loop die Variable zahl nicht “sehen” – und sie deshalb auch nicht im Seriellen Monitor ausgeben könnte. Das bedeutet also, dass wir eine globale Variable brauchen. Diese deklarierst du ganz zu Beginn des Sketchs, also noch vor dem Setup:

int zahl = 1;

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println(zahl);
}

So stellst du sicher, dass der Loop auf sie zugreifen kann. Kehren wir zurück zum Zähler. Hierfür möchten wir zunächst die Variable zahl im Seriellen Monitor ausgeben. Anschließend soll die Zahl in der Variablen um eins erhöht werden. Das funktioniert ganz einfach:

zahl = zahl + 1;

Irritiert dich diese Schreibweise? Dann versuche die Zeile Code einmal so zu lesen: “Nimm die Variable zahl, weise ihr den bisherigen Wert in der Variable zu und addiere hierzu die Zahl 1.”

Es gibt noch eine weitere, kürzere Schreibweise – von der die Sprache C++ übrigens auch ihren Namen hat:

zahl++;

Diese Schreibweise ist auf den ersten Blick zwar weniger intuitiv, spart dir aber beim Programmieren etwas Zeit – und sieht professioneller aus. 😉

Übrigens, wenn du statt der Addition lieber andere Rechenarten verwenden möchtest, funktioniert das so:

zahl = zahl -1; //Subtraktion
zahl--; //Auch Subtraktion
zahl = zahl * 2; //Multiplikation
zahl = zahl / 2; //Division

Und das ist alles, was du für den Zähler benötigst. Der vollständige Sketch sieht dann folgendermaßen aus:

int zahl = 1;

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println(zahl);
  zahl++;
  delay(1000);
}

Auch hier machst du dir wieder den Loop zunutze: Er gibt die Variable zahl aus, addiert eins hinzu, wartet eine Sekunde – und beginnt diese Prozedur wieder von vorne. So lange, bis du den Arduino neu startest oder ausschaltest.

In den nächsten Lektionen wenden wir uns der Hardware zu – beginnend mit einer LED.