Instructions
47
analo
g
Write(Backli
g
ht, 0); 017
018
l
c
d
.
b
e
g
in
(1
6, 2
);
0
1
9
lcd.setCursor(0
,
0)
;
020
lcd.print("**ARDUINO LCD**”)
;
021
}
022
0
2
3
void loop()024
{
025
unsi
g
ne
d
l
on
g
currentMi
ll
is = mi
ll
is
();
026
if(currentMillis – previousMillis >= interval)027
{
028
if(fla
g
==0)i++
;
029
if(fla
g
==1)i--
;
030
03
1
if(i==255)fla
g
=1
;
032
else if(i==0)fla
g
=0
;
033
0
34
analo
g
Write(Backli
g
ht, i)
;
035
036
037 previousMillis = currentMillis;
} 038
}
039
Das Experiment zeigt auch, wie ein automatischer Up/Down-Zähler mit
Begrenzung verwirklicht werden kann. Wichtig ist hier, dass die Variable
mit dem Namen
flag einen defi nierten Startwert von 0 bekommt. Beim
Programmstart wird die Variable
i bis 255 hochgezählt. Wollten wir mit
der vollen Helligkeit beginnen, müssten wir die Variable
flag mit 1 initia-
lisieren und die Variable
i mit 255.
Bei Erreichen der Zählerwerts
i von 255 oder 0 wird immer die Variable
flag von 0 auf 1 bzw. von 1 auf 0 gesetzt und kehrt die Zählerrichtung um
(i++ erhört den Zählerstand, inkrementiert um 1, i-- verringert den Zähler-
stand, dekrementiert um 1). In der
Loop()-Funktion benutzen wir dieses
Mal keine Pause, sondern ermitteln die Zeit über die Funktion
millis().
Nur wenn eine vorgegebene Differenz, die wir in der Variablen
previous-
Millis
deklariert haben, verstrichen ist, wird die Helligkeit um eine Stufe
geändert. So läuft das Programm außerhalb der If()-Abfrage mit voller Ge-
schwindigkeit weiter. Nur wenn der PWM-Wert verändert wird, erhöht sich
die Durchlaufzeit etwas, da einige Funktionen aufgerufen werden, die eine
gewisse Abarbeitungszeit benötigen. Hier könnten Sie auch versuchen, die
unterschiedlichen Durchlaufzeiten mit der
Millis()-Funktion zu ermit-
teln wie Sie es bereits kennengelernt haben.
10174-5 Conrad Arduino Lernpaket_09.indd 4710174-5 Conrad Arduino Lernpaket_09.indd 47 14.07.2015 08:10:2414.07.2015 08:10:24