LEDChaserProgLEDeinzeln

Aus Arduino Hannover
Wechseln zu: Navigation, Suche

Eine LED blinken lassen

Das erste Programm, dass jeder Neuling auf einem Mikrocontroller (z.B. einem Arduino) laufen lässt ist der "Blink-Sketch" - eine einzelne LED blinkt. Damit lässt sich feststellen, dass die Installation der Entwicklungsumgebung (IDE) funktioniert, der übersetzte Sketch auf den Mikrocontroller geladen werden kann, und der Mikrocontroller arbeitet. Außerdem können wir hieran die ersten Begriffe der Programmierung lernen. Normalerweise müssen die zusätzlichen Elemente wie LED und Widerstand auf einem "Steckbrett" (Breadboard) aufgebaut werden. Dies ist bei dem LED-Chaser nicht mehr nötig - hier sind genügend LEDs eingebaut. Schauen wir und unseren ersten Sketch an:

/*  Sketch 01 - blink
 *
 *  Lässt die erste LED des LED-Chasers
 *  blinken.
 *
 *  2016-10-10   Andreas   Sketch erzeugt
 *  2016-10-11   Andreas   Kommentare hinzu
 *
 ****************************************/

// setup: wird einmal zu Beginn ausgeführt

void setup ()
{
    pinMode (3, OUTPUT);
}

// loop: wird immer wieder ausgeführt

void loop ()
{
    digitalWrite (3, LOW);  // LED einschalten
    delay (1000);
    digitalWrite (3, HIGH);   // LED ausschalten
    delay (1000);
}

Zuerst sind hier "Kommentare" zu erkennen: alles, was zwischen "/*" und "*/" steht, sowie alles, was hinter "//" steht. Diese Zeilen (und Zeilenteile) werden beim Programmablauf nicht berücksichtigt (genauer: vorm Übersetzen werden sie entfernt) und dienen nur dazu ein Programm zu erläutern. So können andere (oder der Programmierer selbst nach einem halben Jahr) nachvollziehen, was das Programm tun soll, und was in einzelnen Abschnitten passiert.

Als nächstes werden zwei Funktionen definiert: "setup" und "loop". Beide Funktionen in unserem Sketch geben keinen Wert zurück; sie habe den Type void (=leer). Und beide Funktionen haben keine Parameter; deshalb ist die Liste in den Klammern leer.

Das was in einer Funktion geschieht, steht dann zwischen den beiden geschweiften Klammern ("{" und "}"). In der Funktion setup ist dies der Aufruf einer weiteren Funktion mit zwei Parametern (dazu unten mehr). In der Funktion loop werden zwei Funktionen je zweimal aufgerufen.

Achtung: diese beiden Funktionen müssen in jedem Sketch auftauchen!!!

Damit haben wir folgendes gelernt:

  • wie eine Funktion aufgebaut ist;
  • setup und loop müssen vorhanden sein;
  • Kommentare sind wichtig.

Der absolute Minimal-Sketch sieht also folgendermaßen aus:

void setup ()
{
}
void loop ()
{
}

Dieser Sketch lässt sich übersetzen, auf den Arduino laden und tut ... nichts. (Naja - eigentlich tut er eine ganze Menge; schließlich wird immer wieder die loop-Funktion aufgerufen. Das merkt man aber nicht.) Was machen die Funktionen setup und loop aber?

setup

Die Funktion setup wird einmal nach dem Start des Arduino aufgerufen. Hier werden Vorbereitungen getroffen, die für die Arbeit des Arduino notwendig ist. Die setup-Funktion für den Blink-Sketch ist hier nochmal aufgeschrieben:

void setup ()
{
    pinMode (3, OUTPUT);
}

Innerhalb der Funktion wird eine weitere Funktion aufgerufen: pinMode. Diese hat zwei Parameter: 3 und OUTPUT. Damit wird eingestellt, dass der Pin 3 ein Ausgabe-Pin ist - er kann an und aus geschaltet werden und damit z.B. eine LED oder andere Geräte, die wenig Strom brauchen, steuern.

loop

Die Funktion loop wird immer und immer wieder aufgerufen. Hier passiert üblicherweise die Hauptarbeit eines Sketches.

void loop ()
{
    digitalWrite (3, LOW);  // LED einschalten
    delay (1000);
    digitalWrite (3, HIGH);   // LED ausschalten
    delay (1000);
}

In diesem Fall werden zwei Funktionen je zweimal aufgerufen. digitalWrite ist eine Ausgabefunktion, die einen Pin ein- oder ausschaltet. Sie hat zwei Parameter: der erste beschreibt den Pin, der zweite, ob der Ausgang ein- oder ausgeschaltet wird. Als Pin-Nummer sehen wir die gleiche, für die wir in die setup-Funktion festgelegt haben, dass dieser Pin ein Ausgabe-Pin ist. Der zweite Parameter kann HIGH (hoch) oder LOW (niedrig) sein. Bei HIGH liegt eine hohe Spannung (hier 5V) am Pin an, bei LOW eine niedrige (hier 0V). Da die LED, die am Pin 3 angeschlossen ist, auf der anderen Seite mit +5V verbunden ist, leuchtet sie, wenn der Ausgabe-Pin auf LOW (also Masse) geschaltet ist.

Die andere Funktion (delay) wartet einfach eine Weile. Die Zeit, die der LED-Chaser wartet wird als (einziger) Parameter übergeben; die Einheit ist msec (Millisekunden, tausendstel Sekunden). delay (1000) bedeutet also, dass der LED-Chaser eine Sekunde lang überhaupt nichts tut.

Zusammengefasst passiert in der loop-Funktion also folgendes:

  • Schalte die erste LED ein
  • warte eine Sekunde
  • Schalte die erste LED aus

+ warte eine Sekunde

Nun kannst Du mit dem Blinken ein wenig rumspielen:

  • schneller Blinken
  • langsamer Blinken
  • kurz an, lang aus
  • lang an, kurz aus

Dazu musst Du nur die Parameter der beiden delay-Funktionen ändern.