LEDChaserProgLED: Unterschied zwischen den Versionen

Aus Arduino Hannover
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „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…“)
 
(Der Seiteninhalt wurde durch einen anderen Text ersetzt: „== LEDs blinken lassen == * Eine LED blinken lassen“)
Zeile 1: Zeile 1:
Das erste Programm, dass jeder Neuling auf einem Mikrocontroller (z.B. einem Arduino) laufen lässt ist der "Blink-Sketch" - eine einzelne LED blinkt.
+
== LEDs blinken lassen ==
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:
 
  
<pre>/* Sketch 01 - blink
+
* [[LEDChaserProgLEDeinzeln|Eine LED blinken lassen]]
*
 
*  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);
 
}</pre>
 
 
 
Zuerst sind hier "Kommentare" zu erkennen: alles, was zwischen "<tt>/*</tt>" und "<tt>*/</tt>" steht, sowie alles, was hinter "<tt>//</tt>" 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 ("<tt>{</tt>" und "<tt>}</tt>"). 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:
 
 
 
<pre>void setup ()
 
{
 
}
 
void loop ()
 
{
 
}</pre>
 
 
 
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:
 
 
 
<pre>void setup ()
 
{
 
    pinMode (3, OUTPUT);
 
}</pre>
 
 
 
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.
 
 
 
<pre>void loop ()
 
{
 
    digitalWrite (3, LOW);  // LED einschalten
 
    delay (1000);
 
    digitalWrite (3, HIGH);  // LED ausschalten
 
    delay (1000);
 
}</pre>
 
 
 
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.
 

Version vom 15. Januar 2017, 12:44 Uhr

LEDs blinken lassen