|
14-Kanal-Lauflicht (und: for-Schleife)
Du wirst ein 14-Kanal-Lauflicht bauen und die for-Schleife
kennenlernen.
Ignoriere die Bezeichnungen PC0
bis PB5, wenn sie Dich verwirren!
Das sind die Portbezeichnungen
des Atmega328, wie sie beim Fünfkanallauflicht erläutert wurden.
Das Programm könnte so aussehen:
/*
14-Kanal-Lauflicht
LEDs an den
Ausgängen: Digital_0 bis Digital_13
LED
Strombegrenzung: R1 = 220 Ohm
www.arduinospielwiese.de
*/
int zeit = 100; //für
delay
void setup()
{
pinMode( 0,
OUTPUT);
pinMode( 1,
OUTPUT);
pinMode( 2,
OUTPUT);
pinMode( 3,
OUTPUT);
pinMode( 4,
OUTPUT);
pinMode( 5,
OUTPUT);
pinMode( 6,
OUTPUT);
pinMode( 7,
OUTPUT);
pinMode( 8,
OUTPUT);
pinMode( 9,
OUTPUT);
pinMode(10,
OUTPUT);
pinMode(11,
OUTPUT);
pinMode(12,
OUTPUT);
pinMode(13,
OUTPUT);
}
void loop() {
digitalWrite( 0,
HIGH); delay(zeit); digitalWrite( 0, LOW);
digitalWrite( 1,
HIGH); delay(zeit); digitalWrite( 1, LOW);
digitalWrite( 2,
HIGH); delay(zeit); digitalWrite( 2, LOW);
digitalWrite( 3,
HIGH); delay(zeit); digitalWrite( 3, LOW);
digitalWrite( 4,
HIGH); delay(zeit); digitalWrite( 4, LOW);
digitalWrite( 5,
HIGH); delay(zeit); digitalWrite( 5, LOW);
digitalWrite( 6,
HIGH); delay(zeit); digitalWrite( 6, LOW);
digitalWrite( 7,
HIGH); delay(zeit); digitalWrite( 7, LOW);
digitalWrite( 8,
HIGH); delay(zeit); digitalWrite( 8, LOW);
digitalWrite( 9,
HIGH); delay(zeit); digitalWrite( 9, LOW);
digitalWrite(10,
HIGH); delay(zeit); digitalWrite(10, LOW);
digitalWrite(11,
HIGH); delay(zeit); digitalWrite(11, LOW);
digitalWrite(12,
HIGH); delay(zeit); digitalWrite(12, LOW);
digitalWrite(13,
HIGH); delay(zeit); digitalWrite(13, LOW);
}
Schon ziemlich viel Text, was? Und irgendwie immer wieder fast
dieselbe Anweisung.
Darum sollten wir mal das Thema Schleifen
näher ansehen:
Mit Schleifen kann man Programmabschnitte wiederholt durchlaufen.
Es gibt in C verschiedene Befehle, um Schleifen zu erzeugen.
Wir werden die beliebte for-Schleife
benutzen.
Bsp. 1: die Zahlen 1 bis
10 mit Hilfe der Laufvariablen i
ausgeben
in Pseudocode (zum Verstehen):
for (i = 1 bis
i = 10 mit Schrittweite 1)
mache: { ausgeben(i) }
in C sieht das dann so aus:
for (i=1; i<11; i=i+1) { ausgeben(i); }
statt: i = i + 1
kann man auch (faul) schreiben: i++
for (i=1; i<11; i++) { ausgeben(i); }
Unser Lauflichtcode sieht nun sehr viel kürzer aus:
/*
14-Kanal-Lauflicht
LEDs an den
Ausgängen: Digital_0 bis Digital_13
LED
Strombegrenzung: R1 = 220 Ohm
www.arduinospielwiese.de
*/
int i; //die Laufvariable
void setup()
{
for(i=0; i<14;
i++) { pinMode( i, OUTPUT); }
}
void loop() {
for(i=0; i<14;
i++) { digitalWrite(i, HIGH); delay(100); digitalWrite(i,
LOW); }
}
|