5. Variablen nutzen

Statt feste Werte in Programmen zu verwenden, ist es möglich Variablen einzusetzen. Variablen können als Platzhalter verstanden werden. Zum einen helfen sie, Programme übersichtlicher zu machen. Zum anderen sind viele Funktionen erst mit ihnen möglich.

Variablen müssen im Programm vor der Verwendung bekannt gemacht werden. Diesen Vorgang nennt man Deklaration.

Eine Variablendeklaration hat in folgender Form zu erfolgen:

Typ Name [ = Wert ]

Der Typ beschreibt die Art der Daten, die in der Variable gespeichert werden kann. Vorerst ist es ausreichend den Datentyp int zu kennen. Er dient dazu, Ganzzahlen zu speichern.

Der Name ist (fast) frei wählbar. Die Groß-/Kleinschreibung ist bedeutend! Der Wert ist optional. Die Variable kann zu Beginn einen definierten Wert erhalten. In Syntax­be­schreibungen wird dies häufig durch eckige Klammern kenntlich gemacht. Die erste Zuweisung eines Werts zu einer Variablen bezeichnet man auch Initialisierung.

Auftrag

1) Schreiben Sie das Blink-Programm mit Hilfe von Variablen um:

int ledPinNr = 13;
 
void setup() {
    pinMode(ledPinNr, OUTPUT);
}
 
void loop() {
    digitalWrite(ledPinNr, HIGH);
    delay(1000);
    digitalWrite(ledPinNr, LOW); 
    delay(1000);
}

2) Untersuchen Sie die Funktionsweise folgender Programme und begründen Sie warum die Variante B nicht wie gewünscht funktioniert.

Variante A:

int ledPinNr;

void setup() {
    ledPinNr = 13;
    pinMode(ledPinNr, OUTPUT);
}

void loop() {
    digitalWrite(ledPinNr, HIGH);
    delay(1000);
    digitalWrite(ledPinNr, LOW); 
    delay(1000);
}

Variante B:

int ledPinNr;
  
void setup() {
  pinMode(ledPinNr, OUTPUT);
}

void loop() {
  digitalWrite(ledPinNr, HIGH);
  delay(1000);
  digitalWrite(ledPinNr, LOW); 
  delay(1000);
}

3) Programmoptimierung

Im unten stehenden Programm wurde eine Variable eingeführt, um die Blinkverzögerung zu steuern. Untersuchen Sie das Programm auch mit den Serialmonitor und  erläutern Sie die Bedeutung und Sinnhaftigkeit der Zuweisungen 1 – 3.

int ledPinNr = 13;
int verzoegerung = 1000;  // Zuweisung 1

void setup() {
    Serial.begin(9600);
    pinMode(ledPinNr, OUTPUT);
    verzoegerung = 10;    // Zuweisung 2
}

void loop() {
    verzoegerung = verzoegerung+1000; // Zuweisung 3
    Serial.println(verzoegerung);
    digitalWrite(ledPinNr, HIGH);
    delay(verzoegerung);
    digitalWrite(ledPinNr, LOW); 
    delay(verzoegerung);
}

Schreibe einen Kommentar