Instructions

64 13 | Bargrafanzeige
13
b
is 1.023 abdeckt. Der Zählerwert wird in Prozent um
g
erechnet und de
r
F
u
nkti
o
n
d
raw_bargrap
h
()
über
g
eben
.
In der draw_bargrap
h
()
-
Funktion wird es spannend. Hier erfol
g
t das
Zusammense
t
ze
n
und Anzei
g
en der Bar
g
rafanzei
g
e. Bei
j
edem Aufru
f
der Funktion wird der Cursor an die Position (0, 0)
g
esetzt. Das ist die
Startposition, um die Anzei
g
e neu zu zeichnen
.
In der ersten Zeile
g
eben
wir den prozentuale
n
Wert der Variablen percen
t
aus und schreiben ein
Prozentzeichen dahinter. Hinter dem Prozentzeichen fol
g
en zwei Leerzei-
chen, um die Anzei
g
e bei einem Zehner oder Hunderterversatz zu berei-
nig
en. D
i
edi
g
ital
e
Werteaus
g
abe in Prozent ist damit schon mal ferti
g
.
D
a
nn
se
tz
e
n wir
de
n
Cu
r
so
r mit setCurso
r
(0
,
1)
in die untere, also
d
ie zweite Zei
l
e
d
es LC
D
. Damit wir
d
en
p
r
ozentua
l
en Wert
,
d
er von 0
b
is 100% reicht, auf die 80 Einzelzeichen
(
Pixel
)
aufteilen können, ver-
wenden wir die
M
a
p
()
-
Funktion. Diese skaliert den Ein
g
an
g
swert
per-
ce
n
t
,
der von 0 bis 100 reicht, auf den Aus
g
an
g
swert von 0 bis 80. In de
r
Variablen
percen
t
s
teht danach ein Wert zwischen 0 und 80, abhän
g
i
g
vom Ein
g
an
g
swert percen
t
.
Nun ermitteln wir
,
indem wir den Wert von percen
t
durch 5 dividieren
,
wie
viele Kästen komplett
g
efüllt werden müssen, und schreiben das Er
g
eb
-
n
is in die Variable
c1
.
Mithilfe de
r
M
odulo-Operatio
n
% ermittel
n
wir den
Rest oder die Teilfüllun
g
und schreiben den Wert in die Variable
c2
.
N
un
wissen wir, wie viele Kästen komplett
g
efüllt werden müssen und wie vie
-
l
e nur zum Teil
g
efüllt sind.
In der darauf fol
g
enden F
or
()
-Schleife zählen wir so weit hoch
,
bis alle
aus
g
efüllten Kästchen erreicht sind, und schreiben bei
j
edem Schlei-
f
endurchlauf ein volles Kästen auf das LCD. Da bei
j
eder aufeinander
-
f
ol
g
enden Aus
g
abe am LCD die Zeichen automatisch um eins weiter-
g
eschoben werden, erhalten wir am Ende der Schleife einen Balken
m
it vollen Kästen. Wir sehen an dieser Pro
g
rammstelle auch, dass kei
-
n
e
g
eschweiften Klammern bei der F
or
()
-Schleife verwendet werden.
Der Compiler nimmt für die
F
or
()
-
Schleife nu
r
die darauffol
g
ende Zei-
le
mit in
d
i
e
Sc
hl
e
if
e
au
f
.
D
as
w
ä
r
e
in
d
i
ese
m F
a
ll
der
Auf
r
uf
v
o
n lcd
.
wri
te
(
b
y
t
e
(
5
))
.
N
ac
h B
ee
n
de
n
d
i
ese
r
e
r
s
t
e
n
Sc
hl
e
if
e
wir
d
das
K
äs
t-
chen mit der Teilfüllun
g
auf das LCD
g
eschrieben. So erhalten wir einen
Balken
,
der sich Pixel für Pixel au
f
de
m L
C
D
au
f
bau
t
.
B
eis
p
ie
l
E
s
so
ll
de
r
p
rozentuale Wert 43 dar
g
estellt werden. Wir dividieren die Zahl
43 durch 5, das er
g
ibt 8,6. Da die Variable c1 als Byte deklariert ist, wird
10174-5 Conrad Arduino Lernpaket_09.indd 6410174-5 Conrad Arduino Lernpaket_09.indd 64 14.07.2015 08:10:3014.07.2015 08:10:30