Bodensee
1 Infos Blinklicht
Zeitablaufdiagramm

Sturm- oder Starkwindwarnung am Bodensee. Segelboote werden hierfür mit Signalleuchten gewarnt. Über 60 solcher Sturmwarnleuchten sind hierfür rund um den Bodensee verteilt. Ab Windstärke 6 wird die Starkwindwarnung mit 40 Blitzen pro Minute aktiviert. Bei 90 orangefarbenen Blitzen pro Minute signalisieren die Leuchten eine Sturmwarnung mit mehr als 8 Windstärken.

In dem Diagramm wird der Zeitablaufplan für ein solches Blinklicht gezeigt, wobei die An- und Auszeit nicht identisch sein müssen. Vielmehr wird in den meisten Fällen eine deutlich kürzere An- als Auszeit gewählt.

Beim genauen Betrachten des Signalverlaufs fällt auf, dass nach dem Signalwechsel jeweils eine Wartezeit programmiert werden muss.

2 Die for-Schleife in C
Struktogramm for-Schleife

Die Wartezeit wird mit Hilfe einer Zähl-Schleife erzeugt. Eine Variable i wird hierfür von 0 bis 65000 in 1er Schritten gezählt. In C programmiert man dies folgendermaßen:
unsigned int i;
L1 = 1;
for(i = 0; i <= 65500; i = i + 1){}
L1 = 0;
for(i = 0; i <= 65500; i = i + 1){}

Jede for-Schleife besitzt einen Schleifenkopf mit Initialisierung, Bedingung und Änderung und einen Schleifenkörper, welcherMit in diesem Fall leer ist.

3 Inkrementieren und Dekrementieren
Limettenschale

Diese Geschichte hat LIME seinen Namen gegeben: Möchte man den Wert einer Variable um eins erhöhen schreibt man: i=i+1, möchte man ihn um eins verringern i=i-1.
Mathematisch ist dies nicht sinnvoll, aber beim programmieren sehr wohl. Man stelle sich als Variable eine Glasschütte vor, deren Inhalt 3 Limetten sind. Möchte man die Anzahl um eins erhöhen legt man eine dazu. Man nimmt also den alten Wert und erhöht diesen, so dass der neue Wert 4 Limetten sind.

Da ein Großteil der Arbeit sich beim programmieren wiederholt, tendieren Programmierer zu Abkürzungen:
Inkrementieren: i=i+1, Abkürzung: i++.
Dekrementieren: i=i-1, Abkürzung: i--.

4 Verschachtelte for-Schleifen
Schachtel in Schachtel

Längere Verzögerungszeiten erzeugt man durch das Verschachteln von for-Schleifen:
int i, j;
for(i = 0; i < 2; i ++){
    for(j = 0; j < 3; j ++){
    }
}

In diesem Beispiel wird die innere Schleife 3mal und die äußere Schleife 2mal durchlaufen, das macht insgesamt: 2 . 3 = 6mal.

5 Signalgeber
Signalgeber

Steuert man einen Signalgeber mit einem solchen Signal an, wird dessen Membran in eine Richtung ausgelenkt und wiederholt entspannt. Geschieht dies in der richtigen Frequenz wird für unser Gehör ein Ton höhrbar.

Der Signalgeber auf LIME 1 und LIME 2 ist jeweils parallel zur LED L8 angeschlossen und für eine Spannung von 3,3 V ausgelegt. Am Dipschalter lässt sich der Signalton separat abschalten.



Aufgabe 1 Die for-Schleife

for-Schleife

Gib für die folgenden for-Schleifen an welche Werte jeweils die Zählvariable annimmt und wie oft sie durchlaufen wird.

Achte darauf, dass die Schleife erst nicht mehr durchlaufen wird, wenn die Bedingung falsch ergibt.

for(zaehler=0;zaehler!=10;zaehler=zaehler+1)
 0,1,2,3,4,5,6,7,8,9,(10) --> 10mal

Aufgabe 2 Blinkende LED

leuchtende LED

Wir programmieren ein Blinklicht.

  1. Erstelle das Projekt 03 Blinkende LED und schreibe die C-Datei 03-Blinkende-LED-1.c. Die LED L1 soll kontinuierlich blinken.
  2. Schreibe eine Datei 03-Blinkende-LED-2.c bei der das Licht nur 5mal blinkt.
  3. Schreibe die Datei so um, dass die LED L1 bei Tastendruck 5mal blinkt.

Aufgabe 3 Exakte Zeiten mit verschachtelten for-Schleifen

for(i=1;i<=10;i++){
   for(j=0;j<10;j++);
 }
for(x=3;x<=10;x++){
   for(y=10;y>5;y--);
 }

Wir tranieren unser Programmierkenntnisse mit verschachtelten Schleifen.

  1. Wie oft werden die folgende Schleifen durchlaufen?
  2. Schreibe die C-Datei 03-Blinkende-LED-3.c bei der die Verzögerungszeit exakt 500 ms beträgt. Verwende dazu eine verschachtelte for-Schleife und die Variable zeit = 500.
    Hinweis: Messe die Zeit mit dem Oszilloskop
  3. Für Fortgeschrittene : Schreibe die C-Datei 03-Blinkende-LED-4.c bei der mit Hilfe einer weiteren for-Schleife die Wartezeit zwischen 20 ms und 300 ms variiert wird.

Aufgabe 4 Signalgeber

Der Signalgeber auf dem LIME Demoboard wird programmiert.

Signalgeber

Erzeuge einen Ton mit f = 1 kHz am Signalgeber. Erstelle hierfür die Datei 03-Blinkende-LED-5.c

Hinweis: Der Signalgeber ist parallel zur LED L8 angeschlossen.


© mylime.info