El-bucle-while-y-el-pulsador

Bis ins Unendliche … solange du mich nicht drückst

In einer anderen Lektion haben wir bereits gelernt, wie man die for-Schleife programmiert. Diese wurde hauptsächlich dazu verwendet, um eine Reihe von Handlungen eine bestimmte Anzahl von Malen durchzuführen. Allerdings wollen wir ja nicht immer eine Anzahl festlegen, wie oft die Handlung wiederholt wird, sondern sie so lange ausführen bis eine andere Situation eintritt. Wenn ich beispielsweise eine LED zehnmal hintereinander ein- und ausschalten möchte, ist es das Naheliegendste, dies mit der for-Schleife durchzuführen. Wie sieht es aber aus, wenn ich möchte, dass sie sich so lange ein- und ausschaltet, bis ich auf einen Taster drücke? Dies wäre auch mit der for-Schleife möglich, aber viel umständlicher als eine andere Art und Weise zu wählen, mit der es viel leichter ist. Eine intuitive Lösung wäre zu sagen: Solange der Taster nicht gedrückt wird, schalte die LED ein und aus. Auf der Abbildung sieht das dann so aus:While-loop-diagramSehen wir uns den Arduino-Code der While-Schleife an. Wenn wir davon ausgehen, dass es eine Variable a gibt, bei der es sich um eine ganze Zahl handelt und die an irgendeiner Stelle unseres Programmes aktualisiert wird, würde die While-Schleife folgendermaßen aussehen:

Dieser Code setzt den digitalen Pin 2 solange a kleiner ist als 10 eine Sekunde lang auf 5 Volt und dann eine weitere Sekunde lang auf 0 Volt (ist eine LED angeschlossen, blinkt diese entsprechend). Die Referenzseite der kompletten While-Schliefe findest du hier.

Und jetzt zum Taster

In vorigen Lektionen haben wir uns angesehen, wie man auf einem digitalen Pin schreiben kann, indem wir ihn auf 5 oder 0 Volt setzen und beispielsweise eine LED verwenden. Jetzt lernen wir, den Wert auszulesen, der im digitalen Pin enthalten ist, der auch wieder von 0 bis 5 Volt reicht. Um dies zu veranschaulichen, verwenden wir einen Taster. Bei einem Taster handelt es sich um ein digitales Peripheriegerät, da nur zwei Werte angenommen werden können: gedrückt und nicht gedrückt. Wir weisen also dem einen Zustand eine Spannung von 5 Volt am digitalen Pin zu und dem anderen eine Spannung von 0 Volt. Abhängig davon, wie der Taster entworfen wurde, entsprechen die 5 Volt dem gedrückten oder nicht gedrückten Zustand. Sehen wir uns einmal an wie ein Taster funktioniert:121Auf der Abbildung kannst du erkennen, dass der Taster drei Pins besitzt. Einer ist mit 5 Volt verbunden, der andere mit der Masse (GND) und der dritte mit dem Signalpin (In). Auf dieser Abbildung kannst du, wenn du Elektronik studiert hast, überprüfen, dass am Signalpin 5 Volt vorliegen wenn der Taster gedrückt und der Kreislauf geschlossen ist. Sieh dir aber jetzt die folgende Abbildung an:120In diesem Fall liegen am Signalpin 0 Volt vor wenn der Taster gedrückt wird. Aber wie programmieren wir dies jetzt in Arduino? Gehen wir davon aus, dass die Verbindung der Komponenten folgendermaßen aussieht:zum-3led-4pulsAls Erstes bestimmen wir den Pin 5, an den der Taster angeschlossen ist, als Eingang und den Pin 3, an dem die LED angeschlossen ist, als Ausgang.

Anschließend erstellen wir ein Programm, bei dem die LED so lange blinkt, wie der Taster gedrückt wird. Im gegenteiligen Fall bleibt sie aus. Woher wissen wir allerdings, dass der Taster gedrückt wurde? Unser Taster zeigt 5 Volt an wenn er gedrückt wird, weshalb die Funktion digitalRead(), die die digitalen Pins ausliest, 1 ausgegeben muss (weitere Informationen auf der Referenzseite der Funktion). Der entsprechende Code würde daher folgendermaßen aussehen:

Dieses Programm kann mit einer Variable verändert werden. Sehen wir uns an wie das geht:

Wichtig ist hierbei, dass wir beachten, dass der Wert der Variable Taster in jeder Wiederholung aktualisiert werden muss. Ansonsten würde sich der Wert in der Schleife niemals ändern, unabhängig davon, ob der Taster gedrückt ist oder nicht, und das Programm würde die Schleife daher nie verlassen.  Ich schlage dir etwas vor: Versuche ein Programm zu erstellen, das als Zeitmesser dienen kann. Verwende die LCD-Anzeige und zähle jede Sekunde die vergeht (und zeige sie an), bis der Taster gedrückt wird. Wenn er gedrückt wird sollte die LCD den letzten Wert anzeigen und stehen lassen. Mal sehen, ob du es schaffst.